使用Mediator项目从WSO2 ESB访问WSO2 DSS服务,但它不起作用

时间:2016-05-13 02:03:53

标签: web-services wso2 wso2esb wso2dss

我正在尝试访问我在WSO2 Data Service Server 3.2.2中创建的服务。使用WSO2企业服务总线4.9.0。我生成了源代码来访问服务操作,然后使用WSO2 Developer Studio中的Mediator Project创建了一个类中介。首先,介体只需调用一个操作并打印获得的响应。当我通过java应用程序访问端点时,它可以工作,但是当我在调解器中放入相同的逻辑并将其加载到ESB中时,我收到以下错误:

[2016-05-12 11:22:54,632]错误 - NativeWorkerPool未捕获的异常 javax.xml.ws.spi.FactoryFinder $ ConfigurationError:找不到提供程序org.apache.cxf.jaxws.spi.ProviderImpl     在javax.xml.ws.spi.FactoryFinder $ 2.run(FactoryFinder.java:130)     在javax.xml.ws.spi.FactoryFinder.doPrivileged(FactoryFinder.java:220)     在javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:124)     在javax.xml.ws.spi.FactoryFinder.access $ 200(FactoryFinder.java:44)     在javax.xml.ws.spi.FactoryFinder $ 3.run(FactoryFinder.java:211)     在javax.xml.ws.spi.FactoryFinder.doPrivileged(FactoryFinder.java:220)     在javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:160)     在javax.xml.ws.spi.Provider.provider(Provider.java:43)     在javax.xml.ws.Service。(Service.java:35)     在org.wso2.ws.dataservice.myDSSDataService。(myDSSDataService.java:42)     在mediators.DSSMediator.getVolume(DSSMediator.java:12)     在mediators.DSSMediator.mediate(DSSMediator.java:22)     在org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)     在org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)     at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)     at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)     at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)     在org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)     at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:317)     at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:363)     在org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)     在org.apache.axis2.transport.base.threads.NativeWorkerPool $ 1.run(NativeWorkerPool.java:172)     在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)     在java.lang.Thread.run(Thread.java:745)

2 个答案:

答案 0 :(得分:1)

首先,从DSS获取数据并通过ESB公开它不需要类中介。通常我们使用类中介来扩展ESB。您能告诉我们班级调解员和您的用例的目的吗?你可以参考blogpost [1]来完成这件事。另请检查您是否已将数据库驱动程序复制到$ DSS_HOME / repository / components / lib目录中。

[1] http://dakshithar.blogspot.com/2014/05/entity-aggregation-with-wso2-esb-and_14.html

答案 1 :(得分:0)

感谢您的回复。 在我们的用例中使用类中介的想法是在服务中间注入业务逻辑(操作)。编排。具体来说,我们可以捕获从一个DSS数据服务返回的数据,处理它们(使用某些计算),然后将结果放入同一个服务流中。