• ベストアンサー

TomcatとMySQLの連携について

あるプログラムを作っていますが、jdbcを経由してのmysqlへのデータ登録がうまくいきません。 Tomcatとmysqlのログも確認していますが、特にエラーなどは見られません。 ログに表示されない場合はどのように対処すればいいのでしょうか。 以下環境です。 ubunntu 12.04 Apache Tomcat/7.0.52 JVM 1.7.0_51-b13 MySQL 5.5.35

  • Java
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

#3です。 自分で分かる情報を取得しましょう。 ファイルを決めて(例えば、/tmp/debeg.txtとか)、自分が必要であると思う情報を時刻と一緒に追加書きしていくことです。 不十分な情報で他人に検証をさせるべきではありません。 MySQLは大して使ったことはありませんが、ログからしたら、insertしてselectを繰り返しているように見えます。 DBにデータが入っているを何らかのツールを使って確認してみて、 ・入っていれば、select以降の問題。 ・入っていなければ、insert以前の問題 と切り分けることが出来ます。 このように範囲を絞っていくとこで原因を突き止めましょう。 また、tomcatのログにjavaのexceptionとかの情報は入っていませんか。こちらも確認願います。 なお、servletは敷居が高いです。主要ロジックだけでも単体javaで動作さてみるとデバッグは容易になります。

その他の回答 (3)

回答No.3

事実を確認するところから始めるべきです。 ログに表示されないならば、「自分でログを取得する」ロジックを入れ込んでどこまで正しく処理が進んでいるか確かめる必要があります。 通常はインフラ屋さんがこの辺りの機能を実装/提供してくれます。 コネクトまで大丈夫であれば、SQLの中身、その実行結果等をテキストファイルににでも書きだすようにしておけば、どこまで正しく動作しているかの事実確認が出来ます。

toyoucook
質問者

補足

”ロジック”がわかりませんでしたが、MySQLの一般クエリログを取得してみました。 以下になります。 ここから、インサート処理がなぜできないかヒントが得られますか。 また、インサート処理のコードはこちらです。 http://www.javadrive.jp/servlet/schedule/index9.html お忙しいと思いますがご回答をよろしくお願いします。 39 Connect root@localhost on servletschedule 39 Query /* mysql-connector-java-5.1.29 ( Revision: alexander.soklakov@oracle.com-20140120140810-s44574olh90i6i4l ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'init_connect' 39 Query /* mysql-connector-java-5.1.29 ( Revision: alexander.soklakov@oracle.com-20140120140810-s44574olh90i6i4l ) */SELECT @@session.auto_increment_increment 39 Query SET character_set_results = NULL 39 Query SET autocommit=1 39 Query SET sql_mode='STRICT_TRANS_TABLES' 39 Query insert into schedule (userid, scheduledate, starttime, endtime, schedule, schedulememo) values (1, '2014-3-8', '2:0:00', '3:0:00', 'test', 'test') 39 Quit 140307 21:13:06 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-1' ORDER BY starttime 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-2' ORDER BY starttime . . . 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-31' ORDER BY starttime

  • hehejava
  • ベストアンサー率0% (0/1)
回答No.2

jdbcのクラスパスは通していますか 通してない場合は CASSPATH=.;$JAVA_HOME/Lib/mysql-connector-java-1.7.0-bin.jar export CASSPATH ドライバーをダウンロードし、解凍した中にjarファイルにクラスパスを通しておく必要があるのですが、 あとはjdbcをロード出来るか確認してみるのもいいと思います。

toyoucook
質問者

補足

アドバイスありがとうございます。 別のプログラムを組み、ロードができていることを確認しました。また、データベースへの接続、切断も問題なしです。 なぜこのようなことが起きるのでしょうか。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 デバッカー等は使ってないのでしょうか? ログに出ないのであれば一つ一つ動作を確認してみるしかないです。 また、うまくいかないと思った根拠は何でしょうか?

toyoucook
質問者

補足

回答有難うございます。 デバッカーとは何でしょうか。 普段はNetbeansで作業をしています。 うまくいかないと思った根拠は、入力した情報がMySQLへ 登録されないためです。

関連するQ&A

  • TomcatのJDBC連携について

    TomcatのJDBC連携について javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null' というエラーが消えず、知恵をお貸しください。 他にも同様のケースについて調べては見たのですが解決しません。 ■環境 Windows XP SP3 Eclipse3.6(Pleiades All in One 3.6.0.20100623) apache-tomcat-5.5.29 mysql-essential-5.1.48 ■設定 ■server.xml に下記を追加 <Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.j2ee.server:Test"> </Context> ■Tomcat 5.5/conf/Catalina/localhost/Test.xml に下記を記載 <Context docBase="${catalina.home}/server/webapps/test" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Resource name="jdbc/MySQL_JDBC" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis" username="**" password="**" maxActive="20" maxIdle="30" maxWait="1800"/> </Context> ■Webアプリケーション配下の web.xmlに下記を追加 <resource-ref> <res-ref-name>jdbc/MySQL_JDBC</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ■JSPソースに下記を記載 jdbc.jsp <% InitialContext initCon = new InitialContext(); DataSource ds = (DataSource) initCon.lookup("java:comp/env/jdbc/MySQL_JDBC"); Connection con = ds.getConnection(); Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery("select * from mytable;"); while (result.next()) { 表示処理 } con.close(); initCon.close(); %> 別途作成した下記JSPではデータ取得はできています。 <% Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/test?" + "user=tester&password=tester&useUnicode=true&characterEncoding=Shift_JIS"); Statement st=conn.createStatement(); ResultSet res = st.executeQuery("select * from mytable");

    • ベストアンサー
    • Java
  • TomcatとApacheの連携

    TomcatとApacheの連携がうまくいかないので質問させてもらいました。 環境:Tomcat4.0.3 Apache1.3 jsdk1.4.0 windows ME ディレクトリ構成: C:\Program Files\Apache Tomcat 4.0 C:\Apache C:\j2sdk1.4.0 実行した手順としては、mod_jk_1.3.28.dllをC:\Apache\modules にコピーし 下記の設定を実施。 C:\Apache\conf\mod_jk.conf C:\Program Files\Apache Tomcat 4.0\conf\workers.properties modjk_confの内容: LoadModule jk_module modules/mod_jk_1.3.28.dll AddModule mod_jk.c JkWorkersFile C:/Program Files/Apache Tomcat 4.0/conf/workers.properties JkLogFile C:/Program Files/Apache Tomcat 4.0/logs/mod_jk.log JkLogLevel error JkOptions +ForwardKeySize JkMount /examples/* ajp13 JkMount /examples ajp13 JkMount /admin/* ajp13 JkMount /admin ajp13 JkMount /manager/* ajp13 JkMount /manager ajp13 workers.propertiesの内容: worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 C:\Apache\conf\httpd.confの一番下の行にC:\Apache\conf\httpd.confを追加。 Tomcat起動、Apache起動をすると下記のエラーメッセ-ジが出力されます。 Syntax error on line 2 of c:/apache/conf/mod_jk.conf: Cannot load c:/apache/modules/mod_jk_1.3.28.dll into server: (31) システムに接続 されたデバイスが機能していません。というエラーが表示されています。 どこか設定でおかしいところがあるのでしょうか困っているのでぜひお願いします。

    • ベストアンサー
    • Java
  • TomcatとMySQLのコネクションが切れる

    はじめまして、下記の様な環境でServletを運用していますが、 一日たつと(翌日になると)TomcatとMySQLのコネクションが切れており、 WEBアプリケーションにログインできなくなってしまいます。Tomcatを再起動するとコネクションは回復し、 ログインできるようになります。 なぜコネクションが勝手に切れてしまうのかが、解りませんでしたので質問しました。 よろしくお願い致します。 ・Windows Server2003 ・Tomcat6.0 ・MySQL ・JAVA Servlet エラーログ ----------------------------------------------------------------------- SQLException:No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error: ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.CommunicationsException MESSAGE: Communications link failure Last packet sent to the server was 0 ms ago. STACKTRACE: com.mysql.jdbc.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago. -------------------------------------------------------------

    • ベストアンサー
    • MySQL
  • TomcatとAapcheの連携について教えてください。

    [環境] OS:WindowsXP pro Tomcat 4.0.6 apache 1.3.26 java 1.4.1.02 mod_jk.dllを使用して連携させています。 ブラウザでの画面表示、ログ等で連携の確認はできていますが、 Apache,Tomcatを再起動するとApacheのerror.logの中に [Thu Oct 20 10:56:49 2005] [warn] module mod_jk.c is already added, skipping とエラーが記述されます。 また、Windowsのイベントビューアのアプリケーションの中に 上記エラーが起こったタイミングで次のエラーが感知されていました。 ------------------------------------------------------------------ イベントの種類: エラー イベント ソース: Apache Service イベント カテゴリ: なし イベント ID: 3299 日付: 2005/10/20 時刻: 10:56:48 ユーザー: N/A コンピュータ: XXXXX 説明: The Apache service named Apache.exe reported the following error: >>> [Thu Oct 20 10:56:48 2005] [warn] module mod_jk.c is already added, skipping <<< before the error.log file could be opened. More information may be available in the error.log file. 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。 ------------------------------------------------------------------ アプリケーションとしては、問題なく動作していますがとても気になります。 是非お力を貸していただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • apacheとtomcatの連携

    運用中にApacheとTomcatの連携が出来なくなり、ApacheからTomcatにアクセス出来なくなります。 ApacheとTomcatを再起動すると、またいつも通りにアクセスが出来るようになります。 環境は以下の通りです。 OS:Red Hat Enterprise Linux 3 Java:j2sdk-1_4_2_08 Apache:httpd-2.0.54 Tomcat:jakarta-tomcat-5.0.28 アクセスが出来なくなった時のApacheのエラーログには 下記のように表示されます。 [notice] Apache/2.0.54 (Unix) mod_jk2/2.0.4 configured -- resuming normal operations [error] channelApr.open() attempt to connect to 10.1.1.55:8009 (10.1.1.55) failed 111 [error] ajp13.connect() failed ajp13:localhost:8009 [error] ajp13.service() failed to connect endpoint errno=9 Bad file descriptor [error] ajp13.service() Error forwarding ajp13:localhost:8009 1 1 [error] lb.service() worker failed 120000 for ajp13:localhost:8009 [error] lb_worker.service() all workers in error or disabled state [error] mod_jk2.handler() Error connecting to tomcat 120000, status 503 エラーログを調べたのですが、SELinuxがONになっているとアクセスが出来なく なったりするみたいですが、SELinuxはインストールされていません。 もし、解る方がいらっしゃいましたらすいませんが、よろしくお願い致します。

  • apacheとtomcatの連携について

    初めて質問させて頂きます。宜しくお願いします。 現在FedoraCore4上でApache2.2.0とTomcat5.5.15をmod_proxy_ajpを使用して 連携させております。 この環境でvar/tomcat/webappsの下にプログラムを配置し、 [http/IPaddress/test/index.html]と入力をすると、プログラムは動きます。 (Web.xmlにてindex.htmlをclassファイルに飛ばしております) ここまでは問題はないのですが、 ディレクトリ指定でアドレス先を見に行こうとする場合に問題が発生します。 [http/IPaddress/test/]とアドレスを入力したら問題なく表示されるのですが、 [http/IPaddress/test]とアドレスを入力したらApacheのNotFoundエラーが出てしまいます。 このような状態になってしまっているのですが、何か解決策はあるでしょうか。 アドバイスをいただければ幸いです。 宜しくお願いいたします。

  • ApacheとTomcatの連携が出来ない

    Apacheのドキュメントルートフォルダ内でPHPとPerlが動くよう設定しています。今回、さらにJSPも動かせるようにTomcatを導入し、Apacheとの連携を試みたのですが、どうしても解決できない問題に躓いてしまいました。 http://journal.mycom.co.jp/special/2007/tomcat6/007.html 上記のサイトのように設定したのですが、まったくうまくいきません。 コメントアウトも外しましたし、リダイレクトの設定もしましたが、http://localhost/リダイレクト先/でアクセスすると404エラーが出ます。:8080とTomcatのデフォルトポート番号を足すとアクセス出来るので、リダイレクトが出来ていないようです。が、サイトに載っている作業は全部やったので自分ではお手上げ状態です。なにがいけないのでしょうか??? 環境は OS: Windows XP Apache: v2.2.4 Tomcat: v6.0.13 です。

  • Tomcat6.0でのJSP

    Tomcat6.0を使ってJSPファイルからMYSQLへ接続しようとします。 ブラウザーからアクセスするとしたのようなエラーが表示されます。 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver javaでMYSQLへアクセスするソースを作成しコンパイルして実行すると 正常にMYSQLにアクセスできました。 com.mysql.jdbc.Driverがないとは思うのですが。。。。 まず、何から調べたらいいのか?教えてください

  • Tomcatの設定で困っています。

    Tomcatの設定で困っています。 現在、MySQLとTomcatでJDBCを用いてブラウザゲームを作成しております。 あるプログラムを何度か実行すると、Tomcatがどんどん重くなります。 TomcatのManagerでサーバーの状態を見ると、 "http-bio-8080"の何個かのスレッドのTimeがもの凄い時間になっていました。 Tomcatを再起動すると、直り、動作も軽くなります。 これは、いったいどういった状態なのでしょうか??完全に初心者なので教えてくださると助かります。 "http-bio-8080" Stage Time B Sent B Recv Client VHost Request R ? ? ? ? ? ? P ? ? ? ? ? ? S 5797966 ms 0 KB 0 KB ○.○.○.○ ○○.ne.jp POST ○○○ HTTP/1.1 R ? ? ? ? ? ? P ? ? ? ? ? ? R ? ? ? ? ? ? こんな感じです。Timeが長く、上手く処理されないスレッド?がないときは動作は軽いです。 こちら、対処法などございましたら、ご教示ください。

  • TOMCATが起動しません。

    TOMCATが起動しません。 win2000サーバー環境下で、java_ee_sdk-5_01-windows Apache Tomcat 6.0.26 を導入し、無料グループウエアソフト、GROUP SESSIONを導入しようと思ってます。 試しの環境下(win xp pro)ではうまく導入できたのですが、win2000サーバ-環境下では下記エラーが表示され(romcatのログ)起動しません。皆さんのお知恵を貸してください。 エラーログ(エラーのみの部分) [602 javajni.c] [error] FindClass org/apache/catalina/startup/Bootstrap failed [996 prunsrv.c] [error] Failed loading main org/apache/catalina/startup/Bootstrap class C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\bootstrap.jar [1280 prunsrv.c] [error] ServiceStart returned 3

    • ベストアンサー
    • Java