2012-06-25 3 views
2

다음 경고가 표시되고 Jetty에서 실행되는 CXF (2.5.2)로 작성된 서비스가있는 NPE가 있습니다. 누군가가 경고에서 제안 된대로 executor 큐 크기를 늘리는 방법을 알고 있습니까?CXF OneWayProcessorInterceptor에서 실행 프로그램 큐 크기 늘림

org.apache.cxf.interceptor.OneWayProcessorInterceptor handleMessage 
WARNING: Executor queue is full, run the oneway invocation task in 
caller thread. Users can specify a larger executor queue to avoid 
this. 

WARNING: Interceptor for 
{http://docs.oasis-open.org/wsn/bw-2}MyPublishService#{http://docs.oasis-open.org/wsn/bw-2}Notify 
has thrown exception, unwinding now 
java.lang.NullPointerException 
     at org.apache.cxf.jaxws.context.WrappedMessageContext.<init>(WrappedMessageContext.java:107) 
     at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:53) 
     at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) 
     at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
     at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 
     at org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:232) 
     at org.apache.cxf.interceptor.OneWayProcessorInterceptor.handleMessage(OneWayProcessorInterceptor.java:143) 
     ... 

업데이트 :

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

    <bean id="cxf.default.workqueue" class="org.apache.cxf.workqueue.AutomaticWorkQueueImpl"> 
     <property name="name" value="default" /> 
     <property name="queueSize" value="512" /> 
    </bean> 
</beans> 
+0

나는 비슷한 문제에 직면하고 당 높은 & 낮은 범위를 갖는 형태 org.apache.cxf.workqueue.AutomaticWorkQueueImpl의 스프링 빈을 만들 수 있습니다. Bean 구성 파일을 복사 한 위치와 전개 디스크립터의 해당 구성을이 파일을 읽으려는 것을 알려주시겠습니까? – CKing

+0

올바른 콘텐츠로 파일 (예 : cxf.xml)을 만들고 클래스 경로 내에 추가하면됩니다. – Laurent

+0

그래, 그걸 알아 냈어. 내 웹 서비스를 게시하는데도 사용되는 beans.xml 파일에 추가되었습니다. – CKing

답변

2

그것은 (당신이 당신의 자신의 인스턴스를 등록해야 쉽게 구성 할 수 없습니다 : 나는 다음 봄에 콩을 포함하는 XML 파일을 만든 허용 대답 덕분에 신청을위한 버스로 AutomaticWorkQueue). @OneWay 호출을 처리하는 최대 스레드 수에 대한 기본값은 256입니다. 즉, 서버가 호출자 스레드를 차단하지 않고 최대 256 개의 동시요청을 제공 할 수 있습니다. 귀하의 경우에는

는, 당신은 속성 name="default" & 세트 큐 크기를 스레드 & 초기 번호, 사양 http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cxf/cxf-rt-core/2.1.4/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java

+0

정보를 제공해 주셔서 감사합니다. – Laurent

+0

@Laurent +1 질문에 업데이트 된 서버/컨테이너 세부 정보 [Jetty]에 대한 설명. –

+0

첫 번째 제안을 위해 안녕하세요. 어떻게해야합니까? 그것을 구현하는 방법에 대한 참조가 있습니까? 워크 아웃이 아웃 바운드 클라이언트 요청에 의해 사용되고 있기 때문에 아웃 바운드 응답이 차단되는 문제가있었습니다. 기본적으로 외부 엔티티에 대한 아웃 바운드 요청도하고 있습니다. 그리고 요청을받는 엔드 포인트가 있습니다. 둘 다 동일한 AutomaticWorkQueue를 공유합니다. 내 이해가 맞습니까? 이것이 내가 처리 할 수있는 유일한 이유입니다. 처리가 끝났지 만 응답이 너무 오래 걸리는 이유는 무엇입니까? –