我已经使用服务构建器创建了一个Web服务客户端,并且存根是使用JBoss wsconsume(使用Apache CXF 3.1.4)基于WSDL创建的。
我可以在我的Portlet上调用Web服务客户端,并且一切正常。但是,我创建了一个Scheduler,它基于cron表达式调用了相同的Web服务,在这种情况下,我有一个例外情况
2018-06-26 15:30:10.228 ERROR [liferay/scheduler_dispatch-4][FooSheduler:97] The JAX-WS API bridge is not properly initialized. Please configure it in System Settings.
java.lang.IllegalStateException: The JAX-WS API bridge is not properly initialized. Please configure it in System Settings.
at com.liferay.jaxws.osgi.bridge.Provider.getProvider(Provider.java:172)
at com.liferay.jaxws.osgi.bridge.Provider.createServiceDelegate(Provider.java:106)
at javax.xml.ws.Service.<init>(Service.java:57)
at foo.service.FooService.<init>(FooService.java:42)
at foo.integration.service.impl.FooLocalServiceImpl.callWs(FooLocalServiceImpl.java:71)
任何想法为何?代码完全相同:portlet上的代码和调度程序上的代码。
[编辑] 有一种解决方法,但是需要在Scheduler上创建客户端(它将复制代码)。可以在this issue
上找到更多信息