Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 RPC服务为servlet分配异常_Gwt_Servlets_Gwt Rpc_Classcastexception - Fatal编程技术网

GWT RPC服务为servlet分配异常

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

我正在尝试创建一个简单的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.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
My
web.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";
    }
}