0

私は gwt にかなり慣れていないので、mysql データベースとの接続を理解するのに困惑しています。直接的なチュートリアルはほとんどないため、ここで別のスタックオーバーフローの質問に取り掛かりました。

http://stackoverflow.com/questions/8335322/java-gwt-mysql-connection-refused/8388422#8388422

私はそれを正しく理解できませんが。他の質問で以前の回答として提案されたように、このプロジェクトはGAEを使用しておらず、GWTのみを使用しています。はい、別のサンプル プログラムを使用してデータベースに接続できるので、データベースへのリンクは開いています。また、mysql ドライバーを /WEB-INF/lib にインポートし、それを Java ビルド パスに追加しました。

これの核心は、接続できない理由がわからず、コンソールが役に立たないことです。誰かが私が間違っていることをすぐに見ることができれば、それは素晴らしいことです。サーバー側のリソースのコンソールを表示する方法がわからないだけでなく、エラーメッセージをさらに出力してください(表示されているものよりも多くのエラーがある可能性があることをどこかで読みましたか?)ありがとう。

ここに私の GreetingServiceImpl.java 関連コードがあります

 private final Connection connect() {
    String driver = "com.mysql.jdbc.Driver";
    String dblink = "jdbc:mysql://localhost:3306/";
    String dbname = "gwttest";
    String dbuser = "user";
    String dbpass = "test";
    try {
      Class.forName(driver).newInstance();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    Connection conn = null;
    try {
      conn = DriverManager.getConnection(dblink + dbname, dbuser, dbpass);

    } catch (SQLException e) {
      System.err.println("mysql connection error: ");
      e.printStackTrace();
    }
    return conn;
  }

ここに私のhelloserver.java関連コードがあります

Button b = new Button("test");
vPanel.add(b);
b.addClickHandler(new ClickHandler() {
  @Override
  public void onClick(ClickEvent event) {
      GreetingServiceAsync testservice= (GreetingServiceAsync) GWT.create(GreetingService.class);
    testservice.echo("test", new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub
             vPanel.add(new Label("error"));
             //vPanel.add(new Label(caught.printStackTrace());
             caught.printStackTrace();
        }

        @Override
        public void onSuccess(String result) {
            // TODO Auto-generated method stub
            vPanel.add(new Label(result));
        }

    });
  }
});

これは、ボタンを実行してクリックしたときに受け取ったエラーメッセージです(HTMLにポップアップする「エラー」に加えて)

 com.google.gwt.user.client.rpc.StatusCodeException: 404 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 NOT_FOUND</title>
</head>
<body><h2>HTTP ERROR: 404</h2><pre>NOT_FOUND</pre>
<p>RequestURI=/helloserver/greet</p><p><i><small><a href="http://jetty.mortbay.org/">Powered by Jetty://</a></small></i></p><br/>                                                
</body>
</html>
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:209)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)
at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)
4

1 に答える 1

1

エラーは、RPCに問題があることを示しています。データベース接続の問題により、例外がクライアントにシリアル化され、404が生成されないようにする必要があります。web.xmlとサーブレットが正しく構成されていることを確認してください。https://developers.google.com/web-toolkit/doc/latest/tutorial/RPCを参照してください。

JDBCエラーが発生した場合は、DevModeウィンドウに表示されるか、サーバーで実行されている場合はサーバーのログディレクトリに表示されます。GreetingServiceImplクラスにまったく到達していないようですが、そこには何も表示されません。

JDBCコードを別のクラスに抽出し、GWTとは別にテストする方が簡単な場合があります。すべてを組み合わせる前に、1つのことを機能させてください。mainメソッドまたはJUnitテストを介して実行すると、問題がJDBCコードにあるのか他の場所にあるのかがわかります。

于 2013-02-27T02:15:25.227 に答える