-1

私がやっているのは、次のように新しいサーブレットを web.xml に追加することだけです。

<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>

ただし、これらの行を追加してアプリを実行しようとすると、他のサーブレットのいずれかでサービスを利用できないというエラーが発生します。クラスパスが正しく、クラスが準拠していることは確かです。また、これらを web.xml の web-app タグの間に追加しました。このサーブレットを追加するとアプリが壊れる理由を誰か知っていますか?


編集:

コンピューターでアプリを起動すると、次のエラーが表示されます。

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)
4

1 に答える 1

1

1 つのサーブレット マッピングを指定するだけで、残りは取り残されているように思えます。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 ...

他にいくつのサーブレットがありますか? また、どのサーブレットが失敗していますか? たとえば、新しいものの直前に 1 つだけ、1 つだけ後に、すべて前に、すべて後に、またはそれほど明白なものはありませんか?

編集:

エラー メッセージを見ると、新しいサーブレットでランタイムに問題があることは明らかです。私は問題を見ていると思います。

あなたが投稿した:

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

に変更serveltしてservlet、それが役立つかどうかを確認します。

于 2012-08-23T13:51:26.883 に答える