运行CXF JAX-RS 2.0客户端" target"时出现NullPointerException线程下的Liberty Profile中的方法

时间:2015-08-10 14:38:02

标签: jax-rs cxf websphere-liberty

我在Liberty Profile 8.5.5.6中运行了一些JAX-RS 2.0客户端。它们都按顺序正常工作,但我想在一个Thread中执行它们中的一些,以便它们同时运行。当我试图获得一个"目标"在FutureTask里面:

 WebTarget myResource = client.target(apiURLBase + ...);

我在这个com.ibm.ws ...类中得到NullPointerExcepton:

Caused by: java.lang.NullPointerException
     at com.ibm.ws.jaxrs20.client.bus.LibertyJAXRSClientBusFactory.getClientScopeBus(LibertyJAXRSClientBusFactory.java:89)
     at com.ibm.ws.jaxrs20.client.JAXRSClientImpl.target(JAXRSClientImpl.java:109)
     at org.apache.cxf.jaxrs.client.spec.ClientImpl.target(ClientImpl.java:100)
     at com.servengine.watson.naturallanguageclassifier.NaturalLanguageClassifierRESTClient.classify(NaturalLanguageClassifierRESTClient.java:161)
     at com.servengine.watson.naturallanguageclassifier.NaturalLanguageClassifierRESTClient$Proxy$_$$_WeldClientProxy.classify(Unknown Source)
     at com.skios.eliza.nlq.NaturalLanguageQueryFlowView$1.call(NaturalLanguageQueryFlowView.java:66)
     at com.skios.eliza.nlq.NaturalLanguageQueryFlowView$1.call(NaturalLanguageQueryFlowView.java:1)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)

CXF不能用于" main"线?我错过了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果要在分叉的新线程中使用客户端API,则需要确保新线程是容器管理的线程。在您的情况下,您可以启用concurrent-1.0功能。然后使用:

@Resource(名称= “java的:COMP / DefaultManagedExecutorServcie”) ManagedExecutorService执行者;

 Task task = new Task();    
 Future<String> result = executor.submit(task);

在你的Task类中,你可以用你之前做过的事情做同样的事情:WebTarget myResource = client.target(apiURLBase + ...);