Hi All,
I tried to set endpoint reference from input variable.
In Invoke.bpel I declare variable:
<bpel:variable name="WebServiceUrl" messageType="tns:EndpointMessage" />
EndpointMessage is a message in Invoke.wsdl
<message name="EndpointMessage" >
<part name="payload" element="wsa:EndpointReference" />
</message>
and I set endpoint:
<bpel:assign>
<bpel:copy>
<bpel:from>$input.payload/tns:webServiceUrl</bpel:from>
<bpel:to variable="WebServiceUrl" part="payload"/>
</bpel:copy>
<bpel:copy>
<bpel:from variable="WebServiceUrl" part="payload"/>
<bpel:to partnerLink="TaskServiceClient"/>
</bpel:copy>
</bpel:assign>
It works in apache ode 1.2, but it not in 1.3.4.
When I start process I get error bellow.
Can somebody help me with this problem?
Thanks,
Rafal
13:21:39,121 ERROR [ExternalService] Error sending message to Axis2
for ODE mex {PartnerRoleMex#hqejbhcnphr5x5jl66do7b [PID
{http://www.mg.gov.pl}Invoke-15] calling
org.apache.ode.bpel.epr.WSAEndpoint@2db6ea.AddNewTask(...) Status
REQUEST}
java.lang.NullPointerException
at org.apache.ode.bpel.epr.WSAEndpoint.getUrl(
at org.apache.ode.axis2.SoapExternalService.invoke(
at org.apache.ode.axis2.MessageExchangeContextImpl.invokePartner(
at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(
at org.apache.ode.bpel.runtime.INVOKE.run(
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(
at org.apache.ode.jacob.vpu.JacobVPU.execute(
at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(
at org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeNewInstance(
at org.apache.ode.bpel.engine.BpelProcess$1.invoke(
at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(
at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(
at org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(
at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(
at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(
at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(
at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(
at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(
at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(
at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
13:21:39,121 ERROR [INVOKE] Failure during invoke: Error sending
message to Axis2 for ODE mex {PartnerRoleMex#hqejbhcnphr5x5jl66do7b
[PID {http://www.mg.gov.pl}Invoke-15] calling
org.apache.ode.bpel.epr.WSAEndpoint@2db6ea.AddNewTask(...) Status
REQUEST}
13:21:39,121 INFO [BpelRuntimeContextImpl] ActivityRecovery:
Registering activity 11, failure reason: Error sending message to
Axis2 for ODE mex {PartnerRoleMex#hqejbhcnphr5x5jl66do7b [PID
{http://www.mg.gov.pl}Invoke-15] calling
org.apache.ode.bpel.epr.WSAEndpoint@2db6ea.AddNewTask(...) Status
REQUEST} on channel 21
WSAEndpoint.java:93)SoapExternalService.java:156)MessageExchangeContextImpl.java:52)BpelRuntimeContextImpl.java:865)INVOKE.java:100)JacobVPU.java:451)JacobVPU.java:139)BpelRuntimeContextImpl.java:960)PartnerLinkMyRoleImpl.java:208)BpelProcess.java:283)BpelProcess.java:238)BpelProcess.java:279)BpelProcess.java:426)BpelEngineImpl.java:460)BpelServerImpl.java:450)SimpleScheduler.java:518)SimpleScheduler.java:513)SimpleScheduler.java:284)SimpleScheduler.java:239)SimpleScheduler.java:512)SimpleScheduler.java:496)
<?xml version="1.0" encoding="UTF-8"?>
<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
xmlns:main="http://zzz.com"
xmlns:ns="http://xxx.com">
<process name="main:Invoke">
<active>true</active>
<provide partnerLink="client">
<service name="main:Invoke" port="InvokePort"/>
</provide>
<invoke partnerLink="TaskServiceClient">
<service name="ns:TaskService" port="CustomBinding_ITaskService"/>
</invoke>
<cleanup on="always" />
</process>
</deploy>
<?xml version="1.0"?>
<definitions name="Invoke"
targetNamespace="http://zzz.com"
xmlns:tns="http://zzz.com"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:ns="http://xxx.com"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
>
<import location="TaskService.wsdl" namespace="http://xxx.com"/>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE DEFINITION - List of services participating in this BPEL process
The default output of the BPEL designer uses strings as input and
output to the BPEL Process. But you can define or import any XML
Schema type and us them as part of the message types.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<types>
<schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://zzz.com"
xmlns="http://www.w3.org/2001/XMLSchema"
>
<element name="InvokeRequest">
<complexType>
<sequence>
<element name="webServiceUrl" type="string" />
<element name="applicationId" type="string" />
<element name="operationFlag" type="int" />
</sequence>
</complexType>
</element>
<element name="InvokeResponse">
<complexType>
<sequence>
<element name="result" type="int"/>
</sequence>
</complexType>
</element>
</schema>
</types>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MESSAGE TYPE DEFINITION - Definition of the message types used as
part of the port type defintions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<message name="InvokeRequestMessage">
<part name="payload" element="tns:InvokeRequest"/>
</message>
<message name="InvokeResponseMessage">
<part name="payload" element="tns:InvokeResponse"/>
</message>
<message name="EndpointMessage" >
<part name="payload" element="wsa:EndpointReference" />
</message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT TYPE DEFINITION - A port type groups a set of operations into
a logical service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- portType implemented by the Invoke BPEL process -->
<portType name="Invoke">
<operation name="invokeService">
<input message="tns:InvokeRequestMessage"/>
<output message="tns:InvokeResponseMessage"/>
</operation>
</portType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PARTNER LINK TYPE DEFINITION
the Invoke partnerLinkType binds the provider and
requester portType into an asynchronous conversation.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<plnk:partnerLinkType name="Invoke">
<plnk:role name="InvokeProvider" portType="tns:Invoke"/>
</plnk:partnerLinkType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BINDING DEFINITION - Defines the message format and protocol details
for a web service.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<binding name="InvokeBinding" type="tns:Invoke">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="invokeService">
<soap:operation
soapAction="http://zzz.com/invokeService" />
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SERVICE DEFINITION - A service groups a set of port into
a service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<service name="Invoke">
<port name="InvokePort" binding="tns:InvokeBinding">
<soap:address location="http://localhost:8080/ode/processes/Invoke"/>
</port>
</service>
</definitions>
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<wsdl:definitions xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://xxx.com" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TaskService" targetNamespace="http://xxx.com">
<wsdl:types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://xxx.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://xxx.com">
<xsd:simpleType name="guid">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
</xsd:restriction>
</xsd:simpleType>
<xs:element name="AddNewTask">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="applicationId" type="tns:guid" />
<xs:element minOccurs="0" name="operationFlag" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AddNewTaskResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="AddNewTaskResult" type="tns:guid" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TryGetTaskResult">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="taskId" type="tns:guid" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TryGetTaskResultResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="TryGetTaskResultResult" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="ITaskService_AddNewTask_InputMessage">
<wsdl:part element="tns:AddNewTask" name="parameters"/>
</wsdl:message>
<wsdl:message name="ITaskService_AddNewTask_OutputMessage">
<wsdl:part element="tns:AddNewTaskResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="ITaskService_TryGetTaskResult_InputMessage">
<wsdl:part element="tns:TryGetTaskResult" name="parameters"/>
</wsdl:message>
<wsdl:message name="ITaskService_TryGetTaskResult_OutputMessage">
<wsdl:part element="tns:TryGetTaskResultResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="ITaskService">
<wsdl:operation name="AddNewTask">
<wsdl:input message="tns:ITaskService_AddNewTask_InputMessage" wsaw:Action="http://xxx.com/ITaskService/AddNewTask"/>
<wsdl:output message="tns:ITaskService_AddNewTask_OutputMessage" wsaw:Action="http://xxx.com/ITaskService/AddNewTaskResponse"/>
</wsdl:operation>
<wsdl:operation name="TryGetTaskResult">
<wsdl:input message="tns:ITaskService_TryGetTaskResult_InputMessage" wsaw:Action="http://xxx.com/ITaskService/TryGetTaskResult"/>
<wsdl:output message="tns:ITaskService_TryGetTaskResult_OutputMessage" wsaw:Action="http://xxx.com/ITaskService/TryGetTaskResultResponse"/>
</wsdl:operation>
</wsdl:portType>
<plnk:partnerLinkType name="TaskServicePartnerLink">
<plnk:role name="TaskServcieRole" portType="tns:ITaskService"/>
</plnk:partnerLinkType>
<wsdl:binding name="CustomBinding_ITaskService" type="tns:ITaskService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AddNewTask">
<soap:operation soapAction="http://xxx.com/ITaskService/AddNewTask" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="TryGetTaskResult">
<soap:operation soapAction="http://xxx.com/ITaskService/TryGetTaskResult" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TaskService">
<wsdl:port binding="tns:CustomBinding_ITaskService" name="CustomBinding_ITaskService">
<soap:address location="http://procent02/Ceidg.Services.Archivisation/TaskService.svc"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>