【问题标题】:When I add a new servlet, all of my servelts can no longer be found当我添加一个新的 servlet 时,我所有的 servlet 都找不到了
【发布时间】:2012-08-23 13:44:06
【问题描述】:

我所做的只是向 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)

【问题讨论】:

  • 不,我们没有。如果没有任何上下文、启动日志信息等,我们只是在猜测。

标签: google-app-engine servlets


【解决方案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 看看是否有帮助。

【讨论】:

  • 我有 5 个其他 servlet,失败的是第一个。我还更新了我在尝试启动应用程序时遇到的错误的问题。
  • 我现在真的很傻。我确信我已经仔细检查了所有内容。感谢您指出这一点。
  • 有趣的是帖子的标题有相同的错字:)
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 2013-12-03
  • 2017-03-20
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2010-11-25
相关资源
最近更新 更多