AEM 6.2中的SOAP服务

时间:2016-08-11 09:03:52

标签: soap jetty cxf jax-ws aem

我试图在AEM 6.2中创建SOAP服务(客户端无法进行REST调用)。现在它正常运行,问题是当我们重新部署或重置AEM实例时......然后服务端口被锁定。 "创建()"。

时出错
final JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
jaxWsServerFactoryBean.setServiceClass(getWebServiceClass());
jaxWsServerFactoryBean.setAddress(this.webServiceAddress);
jaxWsServerFactoryBean.setServiceBean(this);
jaxWsServerFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
jaxWsServerFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor());

server = jaxWsServerFactoryBean.create();

*ERROR* [OsgiInstallerImpl] org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine Could not start Jetty server on port 4,517: Address already in use: bind

我第一次部署工作正常但后来我必须为每次重新部署更改端口...如果在创建之前存在,我将关闭服务器,如果我调用" isStarted()&# 34;它说错了。

server.getDestination().shutdown();
server.stop();
server.destroy();

真的坚持了好几天,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您应该创建一个OSGI包并在包内创建您的soap服务。

@Activate
public void activate(BundleContext bundleContext) throws Exception {
   ... start your soap service
}

@Deactivate
public void deactivate() throws Exception {
   ... stop your soap service
}

现在,您可以通过重新启动捆绑包来重新启动soap服务。这里是参考如何创建OSGI包。 http://www.aemcq5tutorials.com/tutorials/create-osgi-bundle-in-aem/