问题描述
我有一个嵌入式Jetty实现。我只能运行REST或SOAP。添加REST服务后,我的SOAP端点将不起作用。我有以下代码来设置SOAP,然后设置REST服务。 REST服务始终有效。
设置Jetty服务器
InetSocketAddress jettyAddress = new InetSocketAddress(tsConfig.getBindIp(),tsConfig.getPort());
Server server = new Server(jettyAddress);
server.setStopAtShutdown(true);
JettyHttpServer jettyServer = new JettyHttpServer(server,true);
final Executor executor = jettyServer.getExecutor();
if(executor != null) {
if (executor instanceof QueuedThreadPool) {
((QueuedThreadPool) executor).setName("td-jetty");
} else {
LOGGER.warn("Jetty executor is not of type QueuedThreadPool,but rather," + executor.getClass().toString());
}
}
ContextHandlerCollection collection = new ContextHandlerCollection();
server.setHandler(collection);
现在添加SOAP端点
Endpoint endpoint = Endpoint.create(retailPosIntegrationService);
endpoint.publish(jettyServer.createContext(tsConfig.getRetailPOSServiceV2().getResource()));
现在添加REST服务
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
ResourceConfig resourceConfig = new ResourceConfig().register(new VisaMobileIntegrationService(initializationSingletonBean));
ServletContainer servletContainer = new ServletContainer(resourceConfig);
context.addServlet(new ServletHolder(new ServletContainer(resourceConfig(initializationSingletonBean))),"/*");
server.setHandler(context);
谢谢。
解决方法
似乎我们只有一个端口并引起冲突。