我现在正在使用 rpc 从我的数据库中提取数据,但是每当我单击该按钮时,它都会生成一个错误,并且我的onFailure
命令总是被触发。
下面是我的程序代码。
public class PleaseWork implements EntryPoint {
private TextBox textbox2 = new TextBox();
private Label Hi = new Label("New label");
@SuppressWarnings("deprecation")
public void onModuleLoad() {
RootPanel rootPanel = RootPanel.get();
Button btnNewButton = new Button("New button");
btnNewButton.addClickListener(new ClickListener() {
public void onClick(Widget event) {
HelpConnectionAsync Abra =(HelpConnectionAsync) GWT.create(HelpConnection.class);
ServiceDefTarget target = (ServiceDefTarget) Abra;
String moduleRelativeURL = GWT.getModuleBaseURL() + "MySQLConnection";
target.setServiceEntryPoint(moduleRelativeURL);
AsyncCallback callback = new AsyncCallback(){
public void onSuccess (Object result){
textbox2.setText((String)result);
Hi.setText("You Pass!");
}
public void onFailure(Throwable caught) {
caught.printStackTrace();
Hi.setText("You fail!");
}
};
Abra.sensors(callback);
}
});
rootPanel.add(btnNewButton, 23, 30);
rootPanel.add(textbox2,23, 70);
rootPanel.add(Hi, 23, 130);
}
}
这包括我的异步和服务程序
public interface HelpConnection extends RemoteService {
public String[] sensors() throws Exception;}
public interface HelpConnectionAsync {
public void sensors(AsyncCallback<String[]> callback);}
这是我的服务器端程序
public class MySQLConnection extends RemoteServiceServlet implements HelpConnection {
private Connection conn = null;
private ResultSet rs = null;
private PreparedStatement pstmt = null;
public static Connection getConnection() throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/temperature";
String username = "root";
String password = "123456";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
@Override
public String[] sensors() throws Exception {
String [] user = null;
try {
conn = getConnection();
rs = pstmt.executeQuery("SELECT ID, times FROM sensor ORDER BY id DESC LIMIT 1;");
// extract data from the ResultSet
while (rs.next()) {
user = new String[] {rs.getString(1),rs.getString(2)};
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}}
最后这是控制台生成的代码
java.lang.NullPointerException
at com.google.gwt.user.client.rpc.core.java.lang.NullPointerException_FieldSerializer.instantiate(NullPointerException_FieldSerializer.java:16)
at com.google.gwt.user.client.rpc.core.java.lang.NullPointerException_FieldSerializer.create(NullPointerException_FieldSerializer.java:25)
at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:115)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)
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.GeneratedMethodAccessor38.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)
开发模式错误
[ERROR] Uncaught exception escaped
com.google.gwt.event.shared.UmbrellaException:捕获到异常:com.google.gwt.user 的 com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129) 未指定服务实现 URL。 com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 上 com.google.gwt.user.client.ui 上的 client.ui.Widget.fireEvent(Widget.java:129)。 com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) 上的 Widget.onBrowserEvent(Widget.java:177) com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:第1307章、来源)在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.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.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) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) ) 在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 在 com.google.gwt 的 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)。 core.client.impl.Impl.entry0(Impl.java:242) 在太阳。reflect.GeneratedMethodAccessor43.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) 在 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) at java.lang.Thread.run(Unknown Source) 原因:com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException:服务实现 URL 未在 com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430) 处指定.java:368) 在 com.google.gwt.user.client.rpc.impl.RemoteServiceProxy$ServiceHelper.finish(RemoteServiceProxy.java:74) 在 com.mycompany.project.client.HelpConnection_Proxy.sensors(HelpConnection_Proxy.java:30 ) 在 com.mycompany.project.client.PleaseWork$1.onClick(PleaseWork.java:30) 在 com.google.gwt.user.client.ui.ListenerWrapper$WrappedClickListener.onClick(ListenerWrapper.java:245) 在 com.google .gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:56) 在 com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) 在 com.google.gwt.event .shared.GwtEvent.dispatch(GwtEvent.java:1) 在 com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) 在 com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40) 在 com .google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) 在 com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) 在 com.google.gwt.user .client.ui.Widget.fireEvent(Widget.java:129) 在 com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 在 com.google.gwt.user.client.ui .Widget.onBrowserEvent(Widget.java:177) 在 com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) 在 com.google.gwt.user.client.DOM.dispatchEvent(DOM.java :1307) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 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) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 在 com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer .java:338) 在 com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) 在 com。 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) 上 com.google.gwt.dev.shell 上的 google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)。 JavaScript主机。在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 上调用NativeObject(JavaScriptHost.java:91) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java: 242) 在 sun.reflect.GeneratedMethodAccessor43.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) 在 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。在 java.lang.Thread.run 运行(BrowserChannelServer.java:364)(未知来源)
另一次尝试基于将返回用户更改为返回 String[] {"text1","text2"} 在 Developmentmode 中再次生成了此错误,
[ERROR] Uncaught exception escaped
java.lang.ClassCastException: [Ljava.lang.String; 无法在 com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter .java:232) 在 com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258) 在 com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412) 在 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) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java: