1

Servlet 2.5 では、次の xml タグを複製して編集するだけで、web.xml ファイルで構成された複数のサーブレットを使用できました。

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Servlet 3 で Spring の AbstractAnnotationConfigDispatcherServletInitializer を使用して複数のサーブレットを作成することは何とか可能ですか?

getServletConfigClasses() メソッドで 2 つのクラスを返し、getServletMappings() メソッドで 2 つのパスを返すだけで十分だと思っていましたが、期待どおりに動作しません。

では、Spring 3 と Servlet 3 を使用して複数のサーブレットを構成する (簡単な) 方法はありますか?

回答ありがとうございます。

4

1 に答える 1

1

次のようなことができます:

public class MyWebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) {

      XmlWebApplicationContext appContext = new XmlWebApplicationContext();
      appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");

     ServletRegistration.Dynamic dispatcher =
        container.addServlet("dispatcher", new DispatcherServlet(appContext));
      dispatcher.setLoadOnStartup(1);
      dispatcher.addMapping("/");

     ServletRegistration.Dynamic anotherServlet =
        container.addServlet("anotherServlet", "com.xxx.AnotherServlet");
      anotherServlet.setLoadOnStartup(2);
      anotherServlet.addMapping("/another/*");

     ServletRegistration.Dynamic yetAnotherServlet =
        container.addServlet("yetAnotherServlet", "com.xxx.YetAnotherServlet");
      yetAnotherServlet.setLoadOnStartup(3);
      yetAnotherServlet.addMapping("/yetanother/*");

    }

 }

もちろん、必要に応じて任意のaddServlet()メソッドを使用できます。

于 2013-05-17T05:43:36.003 に答える