我想學習spring-ws並從本教程開始: http://spring.io/guides/gs/producing-web-service/#initial。如何以編程方式配置MessageDispatcherServlet
我現在要做的是通過編程配置應用程序來啓動非嵌入式servlet容器上的服務。
我被困在如何設置沒有web.xml的消息分派器Servlet。我試過的是 實現WebApplicationInitializer接口的方法onStartup(ServletContext servletContext)。
public class ServerInitializer implements WebApplicationInitializer{
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setConfigLocation(WebServiceConfig.class.getName());
servletContext.addListener(new ContextLoaderListener(context));
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(context);
servlet.setTransformWsdlLocations(true);
// Create dispatcher for named context
ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("DispatcherServlet", servlet);
// Load on startup
dispatcherServlet.setLoadOnStartup(1);
// Add URL mapping for dispatcher
dispatcherServlet.addMapping("/*");
}
}
然而,當我部署該到tomcat,要求我用SOAP UI(這是在教程示例工作)發送從來沒有得到映射
我試過這個沒有成功。對於RootContextConfiguration,我提供了WebServiceConfig類 - 就像教程中的一樣,但沒有ServletRegistrationBean。對於servletConfigClasses,我設置了CountryEndpoint - 即時猜測這是錯誤的? – John 2014-10-20 11:56:22
缺少上下文聲明,應該是:\t \t AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); ? – John 2014-10-20 15:08:57
我應該註冊DispatcherServlet還是MessageDispatcherServlet?我收到錯誤消息:沒有按照您的建議使用DispatcherServlet爲http請求找到映射 – John 2014-10-20 15:41:30