【问题标题】:SOAP service in AEM 6.2AEM 6.2 中的 SOAP 服务
【发布时间】:2016-08-11 09:03:51
【问题描述】:

我正在尝试在 AEM 6.2 中创建 SOAP 服务(客户端无法进行 REST 调用)。现在它可以正常工作了,问题是当我们重新部署或重置 AEM 实例时......然后服务的端口被锁定。 “create()”出错。

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()”它会显示错误。

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

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

【问题讨论】:

  • 不是一个答案,而是一个固执的服务消费者,只想使用肥皂。
  • 您找到解决方案了吗?我目前在 JUnit 测试用例场景中遇到了这个确切的问题,其中端口也保持锁定,并且进一步的单元测试类无法在同一个 JVM 会话中运行。

标签: soap jetty cxf jax-ws aem


【解决方案1】:

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

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

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

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

【讨论】:

  • 这不能回答我的问题。实际上,我在 OSGI 包中创建了肥皂服务,并且 shutdown() stop() 和 destroy() 在 deactivate() 中。问题是端口被锁定,因此在重新启动或重新部署时无法再次使用。 soap 服务在该地址上的独立 Jetty 中启动,因此 AEM 或 bundle 重启什么都不做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多