GWT RPC服务为servlet分配异常
我正在尝试创建一个简单的RPC服务,该服务出现以下错误消息:GWT RPC服务为servlet分配异常,gwt,servlets,gwt-rpc,classcastexception,Gwt,Servlets,Gwt Rpc,Classcastexception,我正在尝试创建一个简单的RPC服务,该服务出现以下错误消息: [tomcat:launch] Apr 3, 2013 12:50:38 AM org.apache.catalina.core.ApplicationContext log [tomcat:launch] INFO: Marking servlet SummaryBuilderServiceImpl as unavailable [tomcat:launch] Apr 3, 2013 12:50:38 AM org.apache.c
[tomcat:launch] Apr 3, 2013 12:50:38 AM org.apache.catalina.core.ApplicationContext log
[tomcat:launch] INFO: Marking servlet SummaryBuilderServiceImpl as unavailable
[tomcat:launch] Apr 3, 2013 12:50:38 AM org.apache.catalina.core.StandardWrapperValve invoke
[tomcat:launch] SEVERE: Allocate exception for servlet SummaryBuilderServiceImpl
[tomcat:launch] java.lang.ClassCastException: com.test.server.SummaryBuilderServiceImpl cannot be cast to javax.servlet.Servlet
[tomcat:launch] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149)
[tomcat:launch] at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
[tomcat:launch] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
[tomcat:launch] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
[tomcat:launch] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
[tomcat:launch] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[tomcat:launch] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[tomcat:launch] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
[tomcat:launch] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
[tomcat:launch] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
[tomcat:launch] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
[tomcat:launch] at java.lang.Thread.run(Thread.java:662)
[tomcat:launch] Apr 3, 2013 12:53:32 AM org.apache.catalina.core.StandardWrapperValve invoke
[tomcat:launch] INFO: Servlet SummaryBuilderServiceImpl is currently unavailable
Myweb.xml
具有以下映射
<!-- Summary Builder Service -->
<servlet>
<servlet-name>SummaryBuilderServiceImpl</servlet-name>
<servlet-class>com.test.server.SummaryBuilderServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SummaryBuilderServiceImpl</servlet-name>
<url-pattern>/test/SummaryBuilder</url-pattern>
</servlet-mapping>
和异步版本
public interface SummaryBuilderServiceAsync {
void sayHelloWorld(AsyncCallback<String> hello);
}
我在入口点调用它,就像
final SummaryBuilderServiceAsync summaryBuilderService = GWT.create(SummaryBuilderService.class);
summaryBuilderService.sayHelloWorld(new AsyncCallback<String>() {
@Override
public void onSuccess(String arg0) {
Window.alert(arg0);
}
@Override
public void onFailure(Throwable arg0) {
arg0.printStackTrace();
Window.alert("Failed to create servlet");
}
});
final summaryBuilderService同步summaryBuilderService=GWT.create(summaryBuilderService.class);
summaryBuilderService.sayHelloWorld(新的AsyncCallback(){
@凌驾
成功时公共无效(字符串arg0){
窗口警报(arg0);
}
@凌驾
失败时公共无效(可丢弃arg0){
arg0.printStackTrace();
Window.alert(“未能创建servlet”);
}
});
您忘记扩展RemoteServiceServlet
,这使您的impl
成为a类servlet
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class SummaryBuilderServiceImpl extendes
RemoteServiceServlet implements SummaryBuilderService {
@Override
public String sayHelloWorld() {
return "Hello World";
}
}
哦,就是这样。谢谢你发现了!
final SummaryBuilderServiceAsync summaryBuilderService = GWT.create(SummaryBuilderService.class);
summaryBuilderService.sayHelloWorld(new AsyncCallback<String>() {
@Override
public void onSuccess(String arg0) {
Window.alert(arg0);
}
@Override
public void onFailure(Throwable arg0) {
arg0.printStackTrace();
Window.alert("Failed to create servlet");
}
});
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class SummaryBuilderServiceImpl extendes
RemoteServiceServlet implements SummaryBuilderService {
@Override
public String sayHelloWorld() {
return "Hello World";
}
}