2013-02-27 115 views
0

我對gwt相當陌生,並且找出與mysql數據庫的連接讓我難堪。由於很少有直接的教程,所以我在這裏討論了另一個stackoverflow問題。到數據庫的GWT/Mysql/Java連接

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) 

回答

1

的錯誤是印度語解決RPC的問題。數據庫連接問題應該導致異常被序列化到客戶端,而不是404。檢查web.xml和servlet配置是否正確。參見:https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC

如果有任何JDBC錯誤,那麼它們應該在DevMode窗口中可見,或者如果在服務器上運行,它們應該在服務器的日誌目錄中可見。它看起來像GreetingServiceImpl類是根本沒有達到,所以不會在那裏看到任何東西。

將JDBC代碼提取到一個單獨的類可能更容易,並從GWT中單獨進行測試。在將所有的東西結合在一起之前得到一件事通過主要方法或JUnit測試運行它,然後知道問題是否與JDBC代碼或其他地方有關。

+0

你是對的,我改變了web.xml文件,並忘記將它改回來。我恢復了原來的狀態,我的問題解決了。 – john 2013-02-27 15:45:49