NullPointerException使用RPC时发生错误 [英] NullPointerException Error when using RPC
问题描述
我现在正在使用rpc从数据库中提取数据,但是每当我单击按钮时,它的确会产生错误,并且总是触发我的 onFailure
命令.
I'm now currently extracting out data from my database using rpc, but whenever I click the button it does generates a error and my onFailure
command is being triggered always.
下面是我的程序代码.
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);
}
}
这既包含我的异步程序又包含服务程序
This consist of both my Async and Service program
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;
}}
最后这是控制台生成的代码
And lastly this is the code generated out by the console
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的com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)中指定服务实现URLcom.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)上com.google.gwt.user.client的.user.client.ui.Widget.fireEvent(Widget.java:129)com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)上的.ui.Widget.onBrowserEvent(Widget.java:177)com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307),位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法),位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源),位于java.lang.reflect.Method处,sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源).在com.com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)处com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处调用(Unknown Source).google.gwt.dev.shell.OophmSessionHandler.icom.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)上的nvoke(OophmSessionHandler.java:172)com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)上的nvoke(OrowmSessionHandler.java:172)在com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)在com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)在com.google.gwt.devcom.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)的com.google.gwt.core.client.impl.Impl.apply的.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)(Impl.java),位于com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242),位于sun.reflect.GeneratedMethodAccessor43.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知)来源)com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处的com.google.gwt.devcom.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)的com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer)的.shell.MethodDispatch.invoke(MethodDispatch.java:71).java:293)(位于com.google.gwt.dev.shell.BrowserChannelServer.java的com.google.gwt.dev.shell.BrowserChannelServer.java:547)(位于Java的com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)).lang.Thread.run(未知来源)由以下原因引起:com.google.gwt.user.client.rpc.ServiceDefTarget $ NoServiceEntryPointSpecifiedException:未在com.google.gwt.user.client.rpc.impl.RemoteServiceProxy中指定的服务实现URL.位于com.google.gwt.user.client.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.java:368)的doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430),位于com.google.gwt.user.client.client.rpc.impl.RemoteServiceProxy $com.mycompany.project.client.HelpConnection_Proxy.sensors(帮助中的ServiceHelper.finish(RemoteServiceProxy.java:74)com.mycompany.project.client.PleaseWork $ 1.onClick(PleaseWork.java:30)上的com.google.gwt.user.client.ui.ListenerWrapper $ WrappedClickListener.onClick(ListenerWrapper.java:245)上的Connection_Proxy.java:30))的com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1)的com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:56).com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)上com.google.web.bindery的google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1).com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)上com.google.g.event.shared.HandlerManager的event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193).com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)上的fireEvent(HandlerManager.java:127)com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent)上的fireEvent(Widget.java:129).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(本地方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源),位于com.google.gwt.dev上java.lang.reflect.Method.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)的.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)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.ModuleSpace.invokeNative(ModuleSpace.java:571)上的google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136))的com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)的com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279).com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)上的core.client.impl.Impl.apply(Impl.java),位于at.sun.reflect.GeneratedMethodAccessor43.invoke(未知源)com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处java.lang.reflect.Method.invoke(未知源)处的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)上的.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)com.google.gwt.dev.shell.BrowserChannelServercom.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)的com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer的.reactToMessages(BrowserChannelServer.java:293).java:364),位于java.lang.Thread.run(未知来源)
com.google.gwt.event.shared.UmbrellaException: Exception caught: Service implementation URL not specified at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129) at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177) at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307) 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.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) 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) Caused by: com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException: Service implementation URL not specified at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430) at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.java:368) at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy$ServiceHelper.finish(RemoteServiceProxy.java:74) at com.mycompany.project.client.HelpConnection_Proxy.sensors(HelpConnection_Proxy.java:30) at com.mycompany.project.client.PleaseWork$1.onClick(PleaseWork.java:30) at com.google.gwt.user.client.ui.ListenerWrapper$WrappedClickListener.onClick(ListenerWrapper.java:245) at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:56) at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40) at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177) at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307) 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.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) 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)
基于更改返回用户以返回String [] {"text1","text2"}的另一种尝试在开发模式中再次产生了此错误,
Another attempt based on changing the return User to return String[] {"text1","text2"} There was this error genererated in the Developmentmode again,
[ERROR] Uncaught exception escaped
java.lang.ClassCastException:[Ljava.lang.String;无法在com.google.gwt.user.client.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter)处的com.mycompany.project.client.PleaseWork $ 1 $ 1.onSuccess(PleaseWork.java:40)处转换为java.lang.String.java:232),位于com.google.gwt.http.client.RequestBuilder $ 1.onReadyStateChange(RequestBuilder.java:412),位于com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)Sun的.reflect.NativeMethodAccessorImpl.invoke0(本机方法)com的java.lang.reflect.Method.invoke(未知源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)上的.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)在com.google.gwt.dev.shell上.OophmSessionHandler.invoke(OophmSessionHandler.java:172)位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServercom.google.gwt.dev.shell.BrowserChannelServer.invoke.java:338)com.com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)的Javascript(BrowserChannelServer.java:219).com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)上com.google.gwt.dev.shell的google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571).com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)位于sun.reflect.GeneratedMethodAccessor43.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源),位于com.google.gwt.dev上java.lang.reflect.Method.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)的.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)上的com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293).shell.BrowserChannelServer.run(BrowserChannelServer.java:364)在java.lang.Thread.run(未知来源)
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String at com.mycompany.project.client.PleaseWork$1$1.onSuccess(PleaseWork.java:40) at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:232) 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.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) 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)
推荐答案
我从PleaseWork类中删除了ServiceDefTarget.它只是工作的基础,现在您只需要添加数据库处理即可.我也改变了回调的类型.现在对我有用(我删除了一些代码以减少代码量):
I removed the ServiceDefTarget from your PleaseWork class. It's just a base to work on, now you just have to add you database handling. Also i changed the type of the callback. It now works for me (I removed some code to reduce the amount of code ):
public void onModuleLoad() {
RootPanel rootPanel = RootPanel.get();
Button btnNewButton = new Button("New button");
btnNewButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
HelpConnectionAsync Abra = (HelpConnectionAsync) GWT
.create(HelpConnection.class);
AsyncCallback<String[]> callback = new AsyncCallback<String[]>() {
public void onSuccess(String[] result) {
textbox2.setText(result[0]);
Hi.setText("You Pass!");
}
public void onFailure(Throwable caught) {
caught.printStackTrace();
Hi.setText("You fail!");
}
};
Abra.sensors(callback);
}
});
在您的原始帖子中没有servlet映射,所以我添加了它:
In your original post there was no servlet mapping, so i added it :
@RemoteServiceRelativePath("Connection")
public interface HelpConnection extends RemoteService {
public String[] sensors() throws Exception;}
与asyn对应的对象:
And the asyn counterpart :
public interface HelpConnectionAsync {
public void sensors(AsyncCallback<String[]> callback);}
还有MySQLConnection的重要部分:
And the important part of the MySQLConnection :
@SuppressWarnings("serial")
public class MySQLConnection extends RemoteServiceServlet implements HelpConnection {
@Override
public String[] sensors() throws Exception {
String [] user = {"test"};
return user;
}}
除了Java类,我还使用了以下web.xml(/war/WEB-INF/web.xml)
Besides the Java classes, i used the following web.xml ( /war/WEB-INF/web.xml )
....
<!-- Servlets -->
<servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>src.server.MySQLConnection</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletName</servlet-name>
<url-pattern>/helpconnection/Connection</url-pattern>
</servlet-mapping>
...
我也无法拒绝将不推荐使用的ClickListener替换为不推荐使用的ClickListener.
Also i could not resist to replace the deprecated ClickListener with the not deprecated one.
这篇关于NullPointerException使用RPC时发生错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!