当我添加一个新的servlet时,无法再找到所有的servlet

时间:2012-08-23 13:44:07

标签: google-app-engine servlets

我正在做的就是在web.xml中添加一个新的servlet,如下所示:

<servelt>
  <servlet-name>NewService</servlet-name>
  <servlet-class>app.server.NewServiceImpl</servlet-class>
</servelt>

<servlet-mapping>
  <servlet-name>NewService</servlet-name>
  <url-pattern>/MyApp/NewService</url-pattern>
</servlet-mapping>

然而,当我添加这些行并尝试运行我的应用程序时,我的其他一个servlet的服务不可用错误。我确信类路径是正确的,并且正在编写类。我还在web.xml中的web-app标签之间添加了这些内容。有谁知道为什么添加这个servlet会破坏我的应用程序?


修改

当我在计算机上启动应用程序时出现此错误:

WARNING: Failed startup of context com.google.appengine.tools.development.DevAppEngineWebAppContext@6a360482{/,C:\Users\Admin\MyApp\war}
java.lang.IllegalStateException: No such servlet: NewService
    at org.mortbay.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1026)
    at org.mortbay.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1110)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:306)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:197)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:241)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:148)
    at com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)

1 个答案:

答案 0 :(得分:1)

听起来像是通过指定一个servlet映射,你正在搁置其余的。我认为你的web.xml应该是这样的:

    ... etc ...
    <servlet>
            <servlet-name>Servlet1</servlet-name>
            <servlet-class>com.Servlet1</servlet-class>
    </servlet>
    <servlet-mapping>
            <servlet-name>Servlet1</servlet-name>
            <url-pattern>/url1</url-pattern>
    </servlet-mapping>

    <servlet>
            <servlet-name>Servlet2</servlet-name>
            <servlet-class>com.Servlet2</servlet-class>
    </servlet>
    <servlet-mapping>
            <servlet-name>Servlet2</servlet-name>
            <url-pattern>/url2</url-pattern>
    </servlet-mapping>
    ... etc ...

你有多少其他servlet,哪一个失败了?例如,只有一个在新的之前,只有一个之后,所有之前,之后,或者没有那么明显?

修改

查看错误消息,很明显运行时遇到了新的servlet问题。我想我看到了问题。

你发布了:

<servelt>
  <servlet-name>NewService</servlet-name>
  <servlet-class>app.server.NewServiceImpl</servlet-class>
</servelt>

servelt更改为servlet并查看是否有帮助。