Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT/Mysql/Java到数据库的连接_Java_Mysql_Gwt - Fatal编程技术网

GWT/Mysql/Java到数据库的连接

GWT/Mysql/Java到数据库的连接,java,mysql,gwt,Java,Mysql,Gwt,我对gwt还相当陌生,弄清楚与mysql数据库的连接让我很为难。由于直接教程很少,我在这里提出了另一个stackoverflow问题 http://stackoverflow.com/questions/8335322/java-gwt-mysql-connection-refused/8388422#8388422 虽然我不能把它弄对。很少有事情,这个项目没有使用GAE,只是GWT,正如前面在另一个问题中的答案所建议的那样。是的,我可以通过另一个示例程序连接到我的数据库,因此数据库的链接是打

我对gwt还相当陌生,弄清楚与mysql数据库的连接让我很为难。由于直接教程很少,我在这里提出了另一个stackoverflow问题

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;
  }
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));
        }

    });
  }
});
下面是我的helloserver.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;
  }
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));
        }

    });
  }
});
按钮b=新按钮(“测试”);
vPanel.add(b);
b、 addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
GreetingServiceAsync testservice=(GreetingServiceAsync)GWT.create(GreetingService.class);
echo(“test”,新的AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
添加(新标签(“错误”);
//添加(新标签(catch.printStackTrace());
已捕获。printStackTrace();
}
@凌驾
成功时的公共void(字符串结果){
//TODO自动生成的方法存根
添加(新标签(结果));
}
});
}
});
这是我在运行并单击按钮时收到的错误消息(除了html中弹出的“错误”之外)

com.google.gwt.user.client.rpc.StatusCodeException:404
找不到错误404
HTTP错误:找不到404u
RequestURI=/helloserver/greet


位于com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:209) 在com.google.gwt.http.client.Request.fireOnResponseReceived上(Request.java:287) 位于com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:103) 位于com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 位于com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 在com.google.gwt.dev.shell.BrowserChannelServer.ReactToMessages上等待返回(BrowserChannelServer.java:338) 在com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript上(BrowserChannelServer.java:219) 在com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) 位于com.google.gwt.dev.shell.ModuleSpace.invokenactive(ModuleSpace.java:571) 位于com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) 位于com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 位于com.google.gwt.core.client.impl.impl.apply(impl.java) 位于com.google.gwt.core.client.impl.impl.entry0(impl.java:242) 位于sun.reflect.GeneratedMethodAccessor23.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:103) 位于com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 位于com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) 位于com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) 在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) 位于java.lang.Thread.run(未知源)
错误表明RPC存在问题。数据库连接问题应导致将异常序列化到客户端,而不是给出404。请检查web.xml和servlet是否正确配置。请参阅:

如果有任何JDBC错误,那么它们应该在DevMode窗口中可见,如果在服务器上运行,则在服务器的日志目录中可见。看起来根本没有到达GreetingServiceImpl类,因此在那里看不到任何内容


将JDBC代码提取到一个单独的类中,并将其与GWT分开测试可能会更容易。在将所有内容组合在一起之前,先做一件事。通过main方法或JUnit测试运行它,然后您就知道问题是出在JDBC代码还是其他地方了。

您是对的,我更改了web.xml文件,忘记了更改它back、 我又回到原来的状态,我的问题得到了解决。