2017-11-22 38 views
1

저희 팀은 Apache Karaf 위에 구축 된 오래된 코드베이스를 상속 받았으며 일부 JAX-WS 서비스가 있습니다. 현재이 객체에 문제가있어 Bean에 항상 주입되는 것은 아닙니다. 우리는 이미 우리가 온라인으로 볼 몇 가지 옵션을 시도WebServiceContext (때때로) OSGi가 삽입되지 않았습니다 - Apache Karaf

@WebService(serviceName = "XXXSoapService", portName = "XXXSoapPort", endpointInterface = "com.XXX.service.XXXSoapInterface", targetNamespace = "http://xxx.xx/") 
@BindingType(value=SOAPBinding.SOAP12HTTP_BINDING) 
public class XXXSoapService implements XXXSoapInterface { 
    @Resource 
    WebServiceContext context; 

    public void doXXX() { 
    context.getMessageContext(); // throws nullpointerexception 
    } 
} 

:로

우리의 서비스를 정의한다. 우리는 setter 주입을 시도 했으므로 자원의 이름을 지정하려고 시도했으며 endpointInterface가 설정되었는지 확인했습니다.

그러나 우리가 무엇을 하든지, 대부분의 경우 서비스는 WebServiceContext를 삽입하지 않고도 인스턴스화됩니다. 때로는 작동하기 때문에 KARAF의 작동 방식과 관련이있을 수도 있고 WebServiceContext를 사용하기 전에 주입하려고 시도 할 수도 있습니다.

featuresBoot 섹션의 org.apache.karaf.features.xml에 CXF가 있습니다.

OSGI와 Karaf에 대한 나의 이해는 매우 기본적인 것이므로 무엇을 찾아야할지 모르겠습니다.

WebServiceContext가 대부분의 시간에 주입되지 않는 이유는 누구나 알 수 있습니까?

편집 : 나는 그것에 대해 읽어 봤는데, 그것은 내가 함께 할 수있는 뭔가가있을 수 있습니다 아파치 청사진 데 예외 보인다

[Blueprint Extender: 3] ERROR org.apache.aries.blueprint.container.BlueprintContainerImpl - Unable 

이 번들 에 대한 청사진 컨테이너를 시작하기를 io.hawtio-karaf-terminal/2.0.0은 해결되지 않은 종속성 때문에 [(objectClass = org.apache.felix.service.threadio.ThreadIO), (objectClass = org.apache.felix.service.command.CommandProcessor)] java.util.concurrent.TimeoutException at org.apache.aries.blueprint.container.Blue printContainerImpl $ 1.run (BlueprintContainerImpl.java:371) at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run (DiscardableRunnable.java:48) at java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) at java.util.concurrent.FutureTask.run (FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201 (ScheduledThreadPoolExecutor.java:180) at java. (ScheduledThreadPoolExecutor.java:293) 에서 java.util.concurrent.ThreadPoolExecutor.runWorker java : 624) at java.lang.Thread.run (스레드 .java : 748)

이 모듈의 종속성을 살펴 보 겠지만 그 이유는 무엇입니까? 다른 아이디어?

답변

0

그러나 해결책을 찾지 못했습니다. 이건 더 많은 일을합니다.

Karaf이 시작될 때 항상로드하는 종속성 폴더에 javaee-api-7.0.jar를 추가했으며 매번 작업을 갑자기 시작했습니다. 이제는 예상대로 WebServiceContext를 주입합니다.

설명되지 않은 것은 이전에 몇 번이나 작동 한 이유입니다. 의존성이 없다면 결코 작동하지 않을 것입니다.내 생각 엔 일부 의존성이 너무 늦게로드되었고 대부분의 경우 실패 할 것이고 이제는이 종속성 폴더에 포함시키기 때문에 시작시 또는 프로세스 초기에로드됩니다. 나는 솔직히 무슨 일이 일어나고 있는지 이해하지 못한다.

다른 사람들에게 도움이 될 수 있기 때문에이 답변을 게시하고 있습니다. 그러나 실제 해결 방법이라고 생각하지 않기 때문에 해결하지 않은 것으로 표시하지 않겠습니다. 누군가가 적절한 해결책을 가지고 있다면, 멀리 발화하십시오.