jboss bpel 调用 web service,而web service 收到的输入参数为nul
悬赏:15 发布时间:2008-07-23 提问人:水冰魂 (初级程序员)
写了一个很简单的bpel,调用一个hello web service.但是hello收到work flow提供的参数却始终为null
下面是testInvoke.bpel 文件的内容
下面是testInvoke.wsdl的内容
下面是TestInvokeArtifacts.wsdl的内容
下面是helloservice.wsdl的内容
在jboss上讲work flow部署成功后调用hello service.但是hello service 所收到的参数始终是null 但是通过reply返回的变量是有值的.说明提供给hello service的变量被正确赋值.搞不懂为什么了.请点解.
该问题已经关闭: 超过15天由系统自动关闭,悬赏平分给所有参与回答的会员
下面是testInvoke.bpel 文件的内容
<?xml version="1.0" encoding="UTF-8"?>
<bpws:process exitOnStandardFault="yes" name="TestInvoke"
suppressJoinFailure="yes" targetNamespace="http://test/Invoke"
xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:ns="http://test/InvokeArtifacts" xmlns:ns0="http://app.com/" xmlns:tns="http://test/Invoke">
<bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
location="TestInvoke.wsdl" namespace="http://test/Invoke"/>
<bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
location="HelloService.wsdl" namespace="http://app.com/"/>
<bpws:import importType="http://schemas.xmlsoap.org/wsdl/"
location="TestInvokeArtifacts.wsdl" namespace="http://test/InvokeArtifacts"/>
<bpws:partnerLinks>
<bpws:partnerLink myRole="TestInvokeProvider" name="client"
partnerLinkType="tns:TestInvoke" partnerRole="TestInvokeRequester"/>
<bpws:partnerLink name="helloPL" partnerLinkType="ns:HelloPLT" partnerRole="helloReq"/>
</bpws:partnerLinks>
<bpws:variables>
<bpws:variable messageType="tns:TestInvokeRequestMessage" name="input"/>
<bpws:variable messageType="tns:TestInvokeResponseMessage" name="output"/>
<bpws:variable messageType="ns0:Hello_SayHelloTo" name="HelReq"/>
<bpws:variable messageType="ns0:Hello_SayHelloToResponse" name="HelR"/>
</bpws:variables>
<bpws:sequence name="main">
<bpws:receive createInstance="yes" name="receiveInput"
operation="initiate" partnerLink="client"
portType="tns:TestInvoke" variable="input"/>
<bpws:assign name="Assign" validate="no">
<bpws:copy>
<bpws:from part="payload" variable="input">
<bpws:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/tns:TestInvokeRequest/tns:input]]></bpws:query>
</bpws:from>
<bpws:to part="SayHelloTo" variable="HelReq">
<bpws:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/ns0:SayHelloTo/ns0:arg0]]></bpws:query>
</bpws:to>
</bpws:copy>
<bpws:copy>
<bpws:from part="SayHelloTo" variable="HelReq">
<bpws:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/ns0:SayHelloTo/ns0:arg0]]></bpws:query>
</bpws:from>
<bpws:to part="payload" variable="output">
<bpws:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/tns:TestInvokeResponse/tns:result]]></bpws:query>
</bpws:to>
</bpws:copy>
</bpws:assign>
<bpws:invoke inputVariable="HelReq" name="Invoke"
operation="SayHelloTo" outputVariable="HelR"
partnerLink="helloPL" portType="ns0:Hello"/>
<bpws:reply name="Reply" operation="initiate"
partnerLink="client" portType="tns:TestInvoke" variable="output"/>
</bpws:sequence>
</bpws:process>
下面是testInvoke.wsdl的内容
<?xml version="1.0"?>
<definitions name="TestInvoke"
targetNamespace="http://test/Invoke"
xmlns:tns="http://test/Invoke"
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
xmlns="http://schemas.xmlsoap.org/wsdl/"
>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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://test/Invoke"
xmlns="http://www.w3.org/2001/XMLSchema"
>
<element name="TestInvokeRequest">
<complexType>
<sequence>
<element name="input" type="string" />
</sequence>
</complexType>
</element>
<element name="TestInvokeResponse">
<complexType>
<sequence>
<element name="result" type="string"/>
</sequence>
</complexType>
</element>
</schema>
</types>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MESSAGE TYPE DEFINITION - Definition of the message types used as
part of the port type defintions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<message name="TestInvokeRequestMessage">
<part name="payload" element="tns:TestInvokeRequest"/>
</message>
<message name="TestInvokeResponseMessage">
<part name="payload" element="tns:TestInvokeResponse"/>
</message>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PORT TYPE DEFINITION - A port type groups a set of operations into
a logical service unit.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- portType implemented by the TestInvoke BPEL process -->
<portType name="TestInvoke">
<operation name="initiate">
<input message="tns:TestInvokeRequestMessage"/>
<output message="tns:TestInvokeResponseMessage"></output>
</operation>
</portType>
<!-- portType implemented by the requester of TestInvoke BPEL process
for asynchronous callback purposes
<portType name="TestInvokeCallback">
<operation name="onResult">
<input message="tns:TestInvokeResponseMessage"/>
</operation>
</portType>
-->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PARTNER LINK TYPE DEFINITION
the TestInvoke partnerLinkType binds the provider and
requester portType into an asynchronous conversation.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<plnk:partnerLinkType name="TestInvoke">
<plnk:role name="TestInvokeProvider" portType="tns:TestInvoke"/>
<plnk:role name="TestInvokeRequester" portType="tns:TestInvoke"/>
</plnk:partnerLinkType>
</definitions>
下面是TestInvokeArtifacts.wsdl的内容
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:tns="http://test/InvokeArtifacts" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:wsdl="http://app.com/" name="TestInvokeArtifacts" targetNamespace="http://test/InvokeArtifacts" xmlns="http://schemas.xmlsoap.org/wsdl/"> <import location="HelloService.wsdl" namespace="http://app.com/"/> <plnk:partnerLinkType name="HelloPLT"> <plnk:role name="helloReq" portType="wsdl:Hello"/> </plnk:partnerLinkType> </definitions>
下面是helloservice.wsdl的内容
<definitions name='HelloService' targetNamespace='http://app.com/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://app.com/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<types>
<xs:schema targetNamespace='http://app.com/' version='1.0' xmlns:tns='http://app.com/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='SayHelloTo' type='tns:SayHelloTo'/>
<xs:element name='SayHelloToResponse' type='tns:SayHelloToResponse'/>
<xs:complexType name='SayHelloTo'>
<xs:sequence>
<xs:element minOccurs='0' name='arg0' type='xs:string'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='SayHelloToResponse'>
<xs:sequence>
<xs:element minOccurs='0' name='return' type='xs:string'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='Hello_SayHelloToResponse'>
<part element='tns:SayHelloToResponse' name='SayHelloToResponse'></part>
</message>
<message name='Hello_SayHelloTo'>
<part element='tns:SayHelloTo' name='SayHelloTo'></part>
</message>
<portType name='Hello'>
<operation name='SayHelloTo' parameterOrder='SayHelloTo'>
<input message='tns:Hello_SayHelloTo'></input>
<output message='tns:Hello_SayHelloToResponse'></output>
</operation>
</portType>
<binding name='HelloBinding' type='tns:Hello'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='SayHelloTo'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
<service name='HelloService'>
<port binding='tns:HelloBinding' name='HelloPort'>
<soap:address location='http://127.0.0.1:8080/HelloService/HelloService'/>
</port>
</service>
</definitions>
在jboss上讲work flow部署成功后调用hello service.但是hello service 所收到的参数始终是null 但是通过reply返回的变量是有值的.说明提供给hello service的变量被正确赋值.搞不懂为什么了.请点解.
该问题已经关闭: 超过15天由系统自动关闭,悬赏平分给所有参与回答的会员




