2016-08-11 10 views
0

AEM 6.2에서 SOAP 서비스를 만들려고합니다 (클라이언트가 REST 호출을 할 수 없습니다). 바로 지금 작동하고 문제는 우리가 재배포하거나 AEM 인스턴스가 리셋 될 때입니다 ... 그러면 서비스의 포트가 잠긴 것입니다. "create()"오류. 내가 전화하면AEM의 SOAP 서비스 6.2

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(); 

정말 며칠 동안 붙어있어서 도움을 주셔서 감사합니다.

+0

답변이 없지만 그것은 비누 만 사용하려는 완고한 서비스 소비자입니다. – Abhishek

+0

솔루션을 찾았습니까? 현재 JUnit 테스트 케이스 시나리오에서 포트가 잠긴 상태를 유지하고 더 이상 유닛 테스트 클래스가 동일한 JVM 세션에서 실행할 수없는 정확한 문제가 있습니다. –

답변

0

OSGI 번들을 만들고 번들 내에 비누 서비스를 만들어야합니다.

@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/

+0

그건 내 질문에 대답하지 않습니다. 실제로 OSGI 번들 내에 비누 서비스를 만들고 shutdown() stop() 및 destroy()가 deactivate()에 있습니다. 문제는 포트가 다시 시작할 때 잠기거나 재배포 할 때 다시 사용할 수 없다는 것입니다. 비누 서비스는 해당 주소의 독립적 인 Jetty에서 시작되므로 AEM 또는 번들이 다시 시작되면 아무 것도 작동하지 않습니다. – ch0ke