bgbg の回答履歴
- synchronizedについて
こんにちは!質問です! javaのsynchronizedについて教えてください。 DBへの更新メソッドに、 排他制御をしようと思っているのですが、調べて自分で コーディングしました。アドバイスをお願いします! public static synchronized void update() throws SQLException{ Connection db = null; PreparedStatement objPs = null; ResultSet rs = null; StringBuffer sql = new StringBuffer(); try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:/comp/env/test/sample"); db=ds.getConnection(); sql.append("UPDATE "); sql.append("test "); sql.append("SET "); sql.append("aaa = '000', "); sql.append("bbb = '000', "); sql.append("ccc = '000' "); sql.append("WHERE dd = '0'"); objPs=db.prepareStatement(sql.toString()); objPs.executeUpdate(); } catch (SQLException e) { //エラー処理 } catch(Exception e) { //エラー処理 } finally { try { if(rs!=null) {rs.close();} if(objPs!=null){objPs.close();} if(db!=null) {db.close();} } catch(Exception e){ e.printStackTrace(); } } } クラスはpublicですが、static synchronized にしていたら、 排他制御が可能でしょうか? staticなので、インスタンス複数でも1つしか存在しないのですよね? その場合、このメソッドを呼び出しているスレッドが終了しないうちに 別のスレッドが呼び出した場合、そのスレッドはどうなるのでしょうか? 目で見て確認する方法もできれば、教えていただきたいです! また、sql発行メソッド(上記メソッド)を直接排他制御するのと、 上記メソッドの呼出元を排他制御するのと、どちらがいいとかって あるのですか? ご存知の方、よろしくお願い致しますm(_ _)m
- ベストアンサー
- Java
- system0001
- 回答数3
- synchronizedについて
こんにちは!質問です! javaのsynchronizedについて教えてください。 DBへの更新メソッドに、 排他制御をしようと思っているのですが、調べて自分で コーディングしました。アドバイスをお願いします! public static synchronized void update() throws SQLException{ Connection db = null; PreparedStatement objPs = null; ResultSet rs = null; StringBuffer sql = new StringBuffer(); try { Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:/comp/env/test/sample"); db=ds.getConnection(); sql.append("UPDATE "); sql.append("test "); sql.append("SET "); sql.append("aaa = '000', "); sql.append("bbb = '000', "); sql.append("ccc = '000' "); sql.append("WHERE dd = '0'"); objPs=db.prepareStatement(sql.toString()); objPs.executeUpdate(); } catch (SQLException e) { //エラー処理 } catch(Exception e) { //エラー処理 } finally { try { if(rs!=null) {rs.close();} if(objPs!=null){objPs.close();} if(db!=null) {db.close();} } catch(Exception e){ e.printStackTrace(); } } } クラスはpublicですが、static synchronized にしていたら、 排他制御が可能でしょうか? staticなので、インスタンス複数でも1つしか存在しないのですよね? その場合、このメソッドを呼び出しているスレッドが終了しないうちに 別のスレッドが呼び出した場合、そのスレッドはどうなるのでしょうか? 目で見て確認する方法もできれば、教えていただきたいです! また、sql発行メソッド(上記メソッド)を直接排他制御するのと、 上記メソッドの呼出元を排他制御するのと、どちらがいいとかって あるのですか? ご存知の方、よろしくお願い致しますm(_ _)m
- ベストアンサー
- Java
- system0001
- 回答数3
- XAMPPでperlからMySQL
XAMPPを使ってローカルのマシンで開発を行おうとしているのですが、perlのDBIモジュールがなくエラーとなってしまいます。phpからはmysqlに接続・操作はできるので、とりあえずモジュールを入れればいいとおもうのですが、検索してもインストールの方法がわかりませんでした。ご存知の方おられますでしょうか?
- JavaMail smtp.mail.yahoo.co.jp
お世話になります。 JavaMail1.4を用いて、 自作プログラム内でメール送信を行おうとしているのですが、 エラーが返ってきてしまいます。 以下エラー内容です。 DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.co.jp", port 25, isSSL false javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.co.jp, port: 25; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1227) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322) at javax.mail.Service.connect(Service.java:258) at javax.mail.Service.connect(Service.java:137) at javax.mail.Service.connect(Service.java:86) at javax.mail.Transport.send0(Transport.java:150) at javax.mail.Transport.send(Transport.java:80) at partsPackage.MailTransfer.send(MailTransfer.java:135) at partsPackage.Tester.main(Tester.java:14) 設定が悪いのか、 サーバーの指定等が悪いのか検討が付かない状況です。 ソースは final String username = "○○○○"; final String password = "○○○○"; final String from_name = "○○○○"; final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; Session session = null; MimeMessage mimeMessage = null; String charset = "UTF8"; String sendTo = null; String title = null; String contents = null; public MailTransfer(){} public MailTransfer(String charset){this.charset=charset;} boolean isConnected(){return session!=null;} public boolean hasMessage(){return mimeMessage!=null;} public boolean hasDestination(){return sendTo!=null;} public boolean hasTitle(){return title!=null;} public boolean hasText(){return contents!=null;} void connect(){ Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); Properties props = System.getProperties(); props.setProperty("mail.smtp.host", "smtp.mail.yahoo.co.jp"); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "25"); props.setProperty("mail.smtp.socketFactory.port", "25"); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "true"); session = Session.getInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); } public void create_mail(){ System.out.println("送信メール作成"); if(!isConnected())connect(); if(hasMessage())return; mimeMessage=new MimeMessage(session); try { // 送信元メールアドレスと送信者名を指定 mimeMessage.setFrom(new InternetAddress(username+"@yahoo.co.jp",from_name,charset)); // メールの形式を指定 mimeMessage.setHeader("Content-Type","text/html"); } catch (Exception e) { e.printStackTrace(); } System.out.println("送信メール作成完了"); } よろしくお願い致します。
- 締切済み
- Java
- yusuke_e_2002
- 回答数2
- JavaMail smtp.mail.yahoo.co.jp
お世話になります。 JavaMail1.4を用いて、 自作プログラム内でメール送信を行おうとしているのですが、 エラーが返ってきてしまいます。 以下エラー内容です。 DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.co.jp", port 25, isSSL false javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.co.jp, port: 25; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1227) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322) at javax.mail.Service.connect(Service.java:258) at javax.mail.Service.connect(Service.java:137) at javax.mail.Service.connect(Service.java:86) at javax.mail.Transport.send0(Transport.java:150) at javax.mail.Transport.send(Transport.java:80) at partsPackage.MailTransfer.send(MailTransfer.java:135) at partsPackage.Tester.main(Tester.java:14) 設定が悪いのか、 サーバーの指定等が悪いのか検討が付かない状況です。 ソースは final String username = "○○○○"; final String password = "○○○○"; final String from_name = "○○○○"; final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; Session session = null; MimeMessage mimeMessage = null; String charset = "UTF8"; String sendTo = null; String title = null; String contents = null; public MailTransfer(){} public MailTransfer(String charset){this.charset=charset;} boolean isConnected(){return session!=null;} public boolean hasMessage(){return mimeMessage!=null;} public boolean hasDestination(){return sendTo!=null;} public boolean hasTitle(){return title!=null;} public boolean hasText(){return contents!=null;} void connect(){ Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); Properties props = System.getProperties(); props.setProperty("mail.smtp.host", "smtp.mail.yahoo.co.jp"); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", "25"); props.setProperty("mail.smtp.socketFactory.port", "25"); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "true"); session = Session.getInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); } public void create_mail(){ System.out.println("送信メール作成"); if(!isConnected())connect(); if(hasMessage())return; mimeMessage=new MimeMessage(session); try { // 送信元メールアドレスと送信者名を指定 mimeMessage.setFrom(new InternetAddress(username+"@yahoo.co.jp",from_name,charset)); // メールの形式を指定 mimeMessage.setHeader("Content-Type","text/html"); } catch (Exception e) { e.printStackTrace(); } System.out.println("送信メール作成完了"); } よろしくお願い致します。
- 締切済み
- Java
- yusuke_e_2002
- 回答数2
- 検索エンジンの結果の取得について
お世話になっております。 現在、検索エンジンの検索結果を取得し対象ページがどのキーワードで何位なのかを調べるアプリを作成しようと思っています。 Yahooの方はAPIを使ってうまく取得出来るようにはなったのですが google、MSNの取得方法が今一よくわかりません。 googleは、"Google Web API" と言うのをダウンロードして来て、その中にあるgoogleapi.jar をクラスパスに通すと出来るといろいろなサイトに記述はされていたのですが、googleのAPIがあるページ(http://www.google.com/apis/)内でどうも見当たりません。 どこにAPIがあるのかご教授願えますでしょうか。 また、MSNの方も同様にAPIなどがあるのでしょうか? どなたかご存じの方がいらっしゃいましたら、ぜひご教授願います。 宜しくお願い致します。
- 検索エンジンの結果の取得について
お世話になっております。 現在、検索エンジンの検索結果を取得し対象ページがどのキーワードで何位なのかを調べるアプリを作成しようと思っています。 Yahooの方はAPIを使ってうまく取得出来るようにはなったのですが google、MSNの取得方法が今一よくわかりません。 googleは、"Google Web API" と言うのをダウンロードして来て、その中にあるgoogleapi.jar をクラスパスに通すと出来るといろいろなサイトに記述はされていたのですが、googleのAPIがあるページ(http://www.google.com/apis/)内でどうも見当たりません。 どこにAPIがあるのかご教授願えますでしょうか。 また、MSNの方も同様にAPIなどがあるのでしょうか? どなたかご存じの方がいらっしゃいましたら、ぜひご教授願います。 宜しくお願い致します。
- ディスク容量確認モジュールの使い方
[Perl初心者です。Rubyは簡単なプログラムを組んだことはあります。 作りたいプログラムの作業フローは 1 ディスクの空き容量を確認 2 ○Gを以下になったら通知メールを出す というプログラムを作成したいのです。 Filesys::DfPortableというモジュールを使うとできると http://oshiete1.goo.ne.jp/qa2241201.html を参考にさせていただきましたが、 どのようなソースを書いていいのかが全く分からない状態です。 モジュールを実行するプログラムコードも分かりません・・・。 ご存知の方がおられましたらご教授いただけますか。 よろしくお願い致します。
- 環境変数のHTTP_REFERERのチェック
配布されたコードを見ているのですが、意味がわからないので 教えて下さい。 $referer_url[0] = 'http:\/\/localhost\/'; と宣言してあり、 そもそもlocalhostの意味もわかりません。 ##===================================== ## リンク元チェック処理 = ##===================================== if($REFERER_seigen == 1){ &ref_chk; if ( $refchk==1 ){ #一致しなければ終了 print "エラー403"; exit; } } という処理で、ref_chk関数を呼んでおりその中身が ##===================================== sub ref_chk{ $refchk = 1; #フラグの初期化(一致しない) = エラー403となる foreach $url_temp(@referer_url){ if ( $ENV{'HTTP_REFERER'} =~ /^$url_temp/){ $refchk = 0; #前方が一致したのがあったらそのホストからだからOK } } return $refchk; } とあります。前方が一致とはどういう意味でしょうか。
- string formatについて
フォームの値(年、月、日)を取得し、 yyyy/mm/ddのようにformatしたいのですが、 以下の場合ですと、年2007 月07 日11 としていると、 例外が発生してしまいます。(java.util.FormatFlagsConversionMismatchException) 元々4桁,2桁あるものに関しては0埋めできないのでしょうか? ご教示願います。 (String.format("%04s/%02s/%02s", form.getStart_date_y(), form.getStart_date_m(), form.getStart_date_d()));
- メールヘッダーについて
perl5.8で メール送信した場合は、以下は必ず ASCII文字ということでしょうか? From, To, Bcc, Replay-To, Return-Path もし日本語が含まれていた場合の書式は以下のようになるということでしょうか? メールヘッダーにはJISに変換するだけでOK?でしょうか? MIMEにする必要があるのでしょうか? 日本語含まれる<test@example.com> <=== JISに変換するだけでOK?
- Javaでタスクシステムを作るのは有効なのでしょうか?
どうもよろしくお願いします。 現在、携帯アプリでゲームを作るに当たって、タスクシステムでも作ろうかと思っています。 私は、C++で、タスクシステムを作った経験があります。 それで、今回の問題点なのですが、C/C++には、関数ポインタがありますが、Javaにはありませんよね? 携帯アプリ向けなので、Verctorクラスと、タスクのInterfaceでも 作れば、複数のタスクを管理することは出来そうです。 ですが、関数ポインタが無いので、タスクチェンジをどうすれば良いだろうか?と疑問に思っています。 タスクの状態変数を用意して、 switch文を使って、実行関数を処理分けすれば、いい話ですが、 これだと、せっかくのタスクシステムの恩恵があまり得られないような気がします。 メインループ内が、Verctor配列で、スッキリするだけでも意味はありますが、タスクチェンジもシンプルにしたいと思っています。 何か良い方法がありますでしょうか? よろしくお願いします。
- sledgeのセットアップ
主題の件で質問です。cpanモジュールのロードエラーが度々発生し足りないモジュールを足しながら対処してきたのですが、下記のエラーの大元が分かりません。 Premature end of script headers: index.cgi Subroutine Sledge::Registrar::context redefined at Sledge/Pages/Base.pm line 79. No such file or directory at HelloWorld/Config.pm line 11. Can't locate object method "new" via package "Template" (perhaps you forgot to load "Template"?) at C:/xampp/Sledge-1.11/lib/Sledge/Template/TT.pm line 51. エラーは、apacheのerror.logです。
- インスタンス化の条件分けについて
標準入力(文字列)の値によってインスタンス化をするときの型を 条件分けすることは可能でしょうか? 具体的にあらわすと 「ABC」を入力したときは ABC al = new ABC() 「BCD」を入力したときは BCD al = new BCD() のような感じです。 もしこれが可能であれば、条件分けするための構文もできたら添えていただきたいです。 よろしくお願いします。
- ベストアンサー
- Java
- sunoftaiyo
- 回答数6
- URLの部分だけを取り出したい(正規表現)
恐れ入ります。 正規表現でURL抜き出しに困っています。 以前ここで教えてもらって$url=~m|http://(.*)[^\S]+|の様にしていたのですが、 次の場合うまくいかないことがわかりました。 $url='<a href="http://www.yahoo.co.jp" target="_blank">http://www.yahoo.co.jp</a>'; $url=~m|http://(.*)[^\S]+| $&に http://www.yahoo.co.jp" とはいっていることがわかりました。 「半角・全角空白、もしくは、" まで」 という判定にしたいです。 どのように書いたらいいのでしょうか・ または、と調べると (s1|s2|...) と書いてあったので [(^\S|\")] とやってみたのですが、エラーになりました・・・
- [Java1.5]Genericsとオーバーロード
現在、Eclipseの上でJavaプログラミングを行っています。 ところが、オーバーロードを行う際にエラーとなり困っています。 疑問点と、解決策をお聞きできるとありがたく思います。 あるプログラムで、単純に言うと以下のようなオーバーロードを行いました。 public static String theFunction(Map<Integer, Integer> theMap){ ・・・ } public static String theFunction(Map<Integer, String> theMap){ ・・・ } すると、一つ目のメソッドに対し Duplicate method theFunction(Map<Integer, Integer> theMap) in ... 二つ目のメソッドに対し Duplicate method theFunction(Map<Integer, String> theMap) in ... というエラーが出てしまいました。 こういうものなのでしょうか? つまり、同じ型のGenericsは、その要素の型が違っていても同一視されるのでしょうか。 またその場合、代替策は無いでしょうか? つまり、 theFunction(x); とした時、x が Map<Integer, Integer> か Map<Integer, String> かによって処理を変える良い方法は無いでしょうか? よろしくお願い致します。
- axis SOAP Fault
お世話になります。 perlクライアントから、axisサーブレット(javaクラス)の呼出を行っています。 サーブレットであるエラーが発生したときに、例外を投げているのですが、 perlクライアント側でその例外をキャッチすることができません。 ▼perlクライアント --------------------------------------------- my $service = SOAP::Lite -> uri('http://xxx/axis/services/TestService') -> proxy('http://xxx/axis/services/TestService?wsdl'); $a = $service->Test( 0, 0 ); unless ( $a->fault ) { print "Success\n"; # Exceptionが発生してもSuccessになる。 } else { print "Error\n"; } ▼javaサーブレットクラス ------------------------------------- public class Test( int a, int b ) { : if ( a==0 || b==0 ) { throw Exception( "testException" ); } : 目的としては、サーブレットクラスの例外を取れればいいのですが、 根本的にやり方が間違っている場合もご指摘いただけると助かります。
- 警察官と飲み屋のお姉さん・・・
警察官の彼がいます、職場柄よても飲み会が多く、スナックにもよく行っています。必ず連絡はメールしてくれるのですが、私には簡単な連絡のみだった日・・飲み屋のお姉さんとメール交換をしていました。(たまたま見えてしまった)あまり会えないのに、疑心がつのり不安になります。結婚の約束もしているけど、いつも飲み屋のお姉さんがひっかかり・・。このサイトで、実際にキャバのお姉さんが警察官とお付き合いしているのだとも知り(涙)。いい年して、どうして寛大になれないのか・・。警察官の奥さんはえらいな・・。
- perl XMLの入れ子取得方法
下記のようなツリー状のXMLから、親となっている情報と子の情報を分けて取得したいのですが、testプログラムで、子だけは取れましたが親の情報だけ取り出す方法が分かりません。どなたか取得方法、サンプルなどを教えていただけないでしょうか? --------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:review="http://www.test.com/"> <channel> <title>test</title> <language>ja</language> <item> <number>1</number> <title>親レビュータイトル</title> <item> <number>3</number> <title>子レビュー2タイトル</title> </item> <item> <number>2</number> <title>子レビュー1タイトル</title> </item> </item> </channel> </rss> --------------------------------------- #testプログラム #!/usr/local/bin/perl use XML::LibXML; #$rss は上記のXMLの内容 $parser = XML::LibXML->new; $doc = $parser->parse_string($rss); @nodes = $doc->findnodes ( "//*[local-name()='item']/*[local-name()='item']" ); for $node (@nodes){ $item ->{'number'} = Henkan::henkan( "-Wexm0",$node->findvalue("./number/text()")); $item ->{'title'} = Henkan::henkan( "-Wexm0",$node->findvalue("./title/text()")); print "[$item ->{'number'}]\n"; print "[$item ->{'title'}]\n"; } ---------------------------------------
- 環境変数リファラーの値をを最後のページまで持ちたい。
表題わかりにくくてすいません。 商品ごとの申し込みフォームを作成しています。 まず、 $ENV{'HTTP_REFERER'};でどのURLのページから来たか判別させて、 その最初に入ってきたリファラーの値をページ遷移のときに最後の ページまでもっていきたいのです。 ■1ページ目(HTML)名まえ年齢、商品番号などを記入 <A.HTML> ■2ページ目(CGI)住所 <B.CGI> sub page2{} ■3ページ目(CGI)確認画面。<C.CGI> sub page3{} ■4ページ目(CGI)サンクスページ <D.CGI> sub thanks{} 以上の4ページの構成ですが、最初の1ページ目のHTMLが商品ごとにちがっていて、どの商品のページのHTMLからきているのか判別させて、サンクスページで、URLごとに別の件名の確認メールを自分あてに送信できるようにしたいので、最初のページがどのURLなのかをリファラーで判断させたいのです。商品によって、入力項目を変えるたりもしています。(POSTで商品ごとのhiddenタグを送ればいいと思うかもしれませんが、今回は$ENV{'HTTP_REFERER'};についてのやり方でやりたいのです。) ですが、$ENV{'HTTP_REFERER'};を2ページ目のサブルーチンのなかに記述しても2ページ目ではどこからきているのか$ref = $ENV{'HTTP_REFERER'};などと記述すればわかるのですが、この最初のリファラーの値を3ページ目、4ページ目に持っていくのにはどうしたらいいのでしょうか?全部のページのサブルーチンに$ref = $ENV{'HTTP_REFERER'};を書いてしまうと、そのひとつまえのURLが認識されてしまいます。ですが、最初のリファラーの値をずっと最後のページまで持っていたいのです。 どなたか、方法がわかりましたらご教授願います。よろしくお願いいたします。