1

我已经设置了 BPS 并创建了一些 BPEL 流程,我可以使用它们来调用应用程序服务器上的服务。我在 ESB 上创建了一个 REST 服务和一个由 Java Spring Boot 编写的 REST 服务,但我遇到了问题。我在 BPS 中的设置只能使用 ESB 上的 REST 服务运行,不能使用 Java 的 REST 服务运行。当我通过 Java 使用 REST 时,我看到了日志:

“错误 {org.wso2.carbon.bpel.core.ode.integration.PartnerService} - 向 Axis2 发送 ODE mex 的消息时出错 {PartnerRoleMex#hqejbhcnphrfigtpcgkgif [PID {http://wso2.org/bps/sample}CallRestJava-383 ] 在 org.apache.axis2.json.gson.factory.XmlNodeGenerator.processSchemaList(XmlNodeGenerator.java 调用 org.apache.ode.bpel.epr.WSAEndpoint@3807729c.getParam(...) 状态请求} java.lang.NullPointerException :60) 在 org.apache.axis2.json.gson.GsonXMLStreamReader.process(GsonXMLStreamReader.java:162) 在 org.apache.axis2.json.gson.factory.XmlNodeGenerator.getMainXmlNode(XmlNodeGenerator.java:258) 在 org. apache.axis2.json.gson.GsonXMLStreamReader.initXmlStreamReader(GsonXMLStreamReader.java:108) 在 org.apache.axis2.json.gson.JSONMessageHandler.invoke(JSONMessageHandler.java:81) 在 org.apache.axis2.engine.Phase。 org.invokeHandler(Phase.java:340)apache.axis2.engine.Phase.invoke(Phase.java:313) 在 org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine. java:167) 在 org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:359) 在 org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:445) 在 org.apache.axis2.description .OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) 在 org.wso2.carbon.bpel.core.ode.integration.HTTPBindingHandler.invoke(HTTPBindingHandler) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) .java:118) 在 org.wso2.carbon.bpel.core.ode.integration.BPELMessageExchangeContextImpl 的 org.wso2.carbon.bpel.core.ode.integration.PartnerService.invoke(PartnerService.java:264)。在 org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:897) 上调用Partner(BPELMessageExchangeContextImpl.java:43) 在 org.apache.ode.bpel.runtime.INVOKE.run(INVOKE.java:140)在 sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.ode .jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451) 在 org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) 在 org.apache.ode.bpel.engine.BpelRuntimeContextImpl org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java: 283)在 org.apache.ode.bpel.engine。BpelProcess.invokeProcess(BpelProcess.java:224) 在 org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:279) 在 org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.java: 434)在 org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:467)在 org.apache.ode .scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:633) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleScheduler.java:627) at org.apache.ode.scheduler .simple.SimpleScheduler.execTransaction(SimpleScheduler.java:298) at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:253) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call (SimpleScheduler.java:627) 在 org.apache.ode。scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:611) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)"

REST 服务都只是从数据库中获取用户信息

“http://localhost:8082/user/id/{id}”

“http://localhost:8281/services/user_service/insert/{id}”

这是我调用 REST 服务的 BPS 设置

"<wsdl:definitions name="UserService" targetNamespace="http://www.example.org/UserService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http ://www.example.org/UserService/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/ " xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"> wsdl:types<xsd:schema xmlns :xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/UserService/"> <xsd:element name="userID"> xsd:complexType xsd:序列 <xsd:element name="id" type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="user"> xsd:complexType xsd:sequence <xsd:element name="id" type="xsd:int"></xsd:element> <xsd:element name="name" type="xsd: string"></xsd:element> <xsd:element name="email" type="xsd:string"></xsd:element> <xsd:element name="address" type="xsd:string">< /xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema></wsdl:types> <wsdl:message name="getParamRequest"> <wsdl:part name ="userID" element="tns:userID"></wsdl:part> </wsdl:message> <wsdl:message name="getParamResponse"> <wsdl:part name="result" element="tns:user" ></wsdl:部分> </wsdl:message> <wsdl:portType name="UserGetPortType"> <wsdl:operation name="getParam"> <wsdl:input message="tns:getParamRequest"></wsdl:input> <wsdl:output message="tns:getParamResponse "></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="UserGetBinding" type="tns:UserGetPortType"> <http:binding verb="GET" /> <wsdl :operation name="getParam"> <http:operation location="http://localhost:8082/user/id/{id}" /> wsdl:input http:urlReplacement/ </wsdl:input> wsdl:output < mime:content part="result" type="text/xml"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="UserGetService"> <wsdl:端口名称="UserGetPort" binding="tns:UserGetBinding"> <http:address location="http://localhost:8082/user/id/1"/> </wsdl:port> </wsdl:service>< /wsdl:定义>"

所以现在每一个想法对我来说都很好。谢谢!!!

4

0 回答 0