WRAPPED ParameterStyle bpel process receive WS returns null
lall2 Apr 2, 2010 9:40 AMHi,
Calling a BPEL process with a receive WS (parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
with a junit test client, the return value is null. When I use SOAPBinding.ParameterStyle.BARE,
there are no problems. The client uses the ws client proxy classes generated by wsprovide and wsconsume.
The intial WebService:
@WebService(name = "ReceiveWS", targetNamespace = "http://bpel.com/ws/receive", serviceName = "ReceiveService")
@SOAPBinding(
style = SOAPBinding.Style.DOCUMENT,
parameterStyle = SOAPBinding.ParameterStyle.WRAPPED
)
public class ReceiveWSImpl {
@WebMethod
@WebResult(name = "MessageResponse", targetNamespace = "http://bpel.com/ws/receive", partName = "MessageResponsePart")
public String getMessage(
@WebParam(name = "MessageRequest", targetNamespace = "http://bpel.com/ws/receive", partName = "MessageRequestPart")
String messageRequestPart) {
return messageRequestPart+": "+System.currentTimeMillis();
}
}
process:
<process name="InitialBpelProcess"
targetNamespace="http://bpel.com"
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:tns="http://bpel.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://bpel.com/ws/receive"
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
<import location="ReceiveService.wsdl"
namespace="http://bpel.com/ws/receive"
importType="http://schemas.xmlsoap.org/wsdl/"/>
<partnerLinks>
<partnerLink name="ReceiveServicePartnerLink"
partnerLinkType="ns1:ReceiveServicePartnerLinkType"
myRole="ReceiveServiceRole"/>
</partnerLinks>
<variables>
<variable name="GetMessageVar" messageType="ns1:ReceiveWS_getMessage"/>
<variable name="GetMessageResponseVar" messageType="ns1:ReceiveWS_getMessageResponse"/>
</variables>
<sequence>
<receive partnerLink="ReceiveServicePartnerLink"
portType="ns1:ReceiveWS"
operation="getMessage"
variable="GetMessageVar"
createInstance="yes"/>
<assign>
<copy>
<from>concat($GetMessageVar.MessageRequest, 'sdfsdf')</from>
<to variable="GetMessageResponseVar" part="getMessageResponse"/>
</copy>
</assign>
<reply partnerLink="ReceiveServicePartnerLink"
portType="ns1:ReceiveWS"
operation="getMessage"
variable="GetMessageResponseVar"/>
</sequence>
</process>
WSDL wrapped:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name='ReceiveService' targetNamespace='http://bpel.com/ws/receive' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://bpel.com/ws/receive' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
<types>
<xs:schema targetNamespace='http://bpel.com/ws/receive' version='1.0' xmlns:tns='http://bpel.com/ws/receive' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='getMessage' type='tns:getMessage'/>
<xs:element name='getMessageResponse' type='tns:getMessageResponse'/>
<xs:complexType name='getMessage'>
<xs:sequence>
<xs:element form='qualified' minOccurs='0' name='MessageRequest' type='xs:string'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='getMessageResponse'>
<xs:sequence>
<xs:element form='qualified' minOccurs='0' name='MessageResponse' type='xs:string'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='ReceiveWS_getMessage'>
<part element='tns:getMessage' name='getMessage'/>
</message>
<message name='ReceiveWS_getMessageResponse'>
<part element='tns:getMessageResponse' name='getMessageResponse'/>
</message>
<portType name='ReceiveWS'>
<operation name='getMessage' parameterOrder='getMessage'>
<input message='tns:ReceiveWS_getMessage'/>
<output message='tns:ReceiveWS_getMessageResponse'/>
</operation>
</portType>
<binding name='ReceiveWSBinding' type='tns:ReceiveWS'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getMessage'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
<service name='ReceiveService'>
<port binding='tns:ReceiveWSBinding' name='ReceiveWSPort'>
<soap:address location='http://127.0.0.1:8080/bpel-ws-receive'/>
</port>
</service>
<plnk:partnerLinkType name="ReceiveServicePartnerLinkType">
<plnk:role name="ReceiveServiceRole" portType="tns:ReceiveWS"/>
</plnk:partnerLinkType>
</definitions>
WSDL bare:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name='ReceiveService' targetNamespace='http://bpel.com/ws/receive' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://bpel.com/ws/receive' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
<types>
<xs:schema targetNamespace='http://bpel.com/ws/receive' version='1.0' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='MessageRequest' nillable='true' type='xs:string'/>
<xs:element name='MessageResponse' nillable='true' type='xs:string'/>
</xs:schema>
</types>
<message name='ReceiveWS_getMessage'>
<part element='tns:MessageRequest' name='MessageRequestPart'/>
</message>
<message name='ReceiveWS_getMessageResponse'>
<part element='tns:MessageResponse' name='MessageResponsePart'/>
</message>
<portType name='ReceiveWS'>
<operation name='getMessage' parameterOrder='MessageRequestPart'>
<input message='tns:ReceiveWS_getMessage'/>
<output message='tns:ReceiveWS_getMessageResponse'/>
</operation>
</portType>
<binding name='ReceiveWSBinding' type='tns:ReceiveWS'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getMessage'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
<service name='ReceiveService'>
<port binding='tns:ReceiveWSBinding' name='ReceiveWSPort'>
<soap:address location='http://127.0.0.1:8080/bpel-ws-receive'/>
</port>
</service>
<plnk:partnerLinkType name="ReceiveServicePartnerLinkType">
<plnk:role name="ReceiveServiceRole" portType="tns:ReceiveWS"/>
</plnk:partnerLinkType>
</definitions>
client:
public class TestReceiveWS {
private ReceiveWS sei;
@Before
public void setUp() throws Exception {
ReceiveService service = new ReceiveService();
sei = service.getReceiveWSPort();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testReceiveWS() {
String result = sei.getMessage("aaa");
log.debug("result="+result);
//DEBUG [com.bpel.ws.receive.TestReceiveWS] result=null with WRAPPED
//DEBUG [com.bpel.ws.receive.TestReceiveWS] result=aaasdfsdf with BARE
}
}
All the examples use RPC style WebServices. Is SOAPBinding.ParameterStyle.WRAPPED
not supported yet and may this be the reason why null is returned?
Kind regards
Simon