我有一些JAX-RS2.0客户端运行在8.5.5.6中。它们都是按顺序工作的,但我想在线程中执行其中的一些,以便它们同时运行。当我试图在FutureTask中获得一个“目标”时,使用:
WebTarget myResource = client.target(apiURLBase + ...);我让NullPointerExcepton在这个com.ibm.ws..。类:
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不能从“主”线程中使用?我遗漏了什么?
谢谢你的帮助。
发布于 2015-08-11 07:05:01
如果要在分叉的新线程中使用客户端API,则需要确保新线程是托管的容器。在您的例子中,您可以启用并发-1.0特性。然后使用:
@Resource(name="java:comp/DefaultManagedExecutorServcie") ManagedExecutorService执行者;
Task task = new Task();
Future<String> result = executor.submit(task);在任务类中,您可以对前面所做的操作进行相同的操作: WebTarget myResource = client.target(apiURLBase +.);
https://stackoverflow.com/questions/31922438
复制相似问题