[jboss-user] [JBoss jBPM] - BPEL: invoke a oneway webservice
zauberlehrling
do-not-reply at jboss.com
Sun May 20 16:42:22 EDT 2007
Hi,
I have a simple oneway webservice implemented by a stateless session bean:
| package beispiel;
|
| import javax.ejb.Stateless;
| import javax.jws.Oneway;
| import javax.jws.WebMethod;
| import javax.jws.WebService;
|
| @WebService
| @Stateless
| public class Asynchron {
|
| @WebMethod
| @Oneway
| public void createAccount( String name ) {
| System.out.println("Asynchron: "+name);
| }
| }
|
After deployment I can find the following wsdl file:
<?xml version="1.0" encoding="UTF-8"?>
| <definitions name="AsynchronService"
| targetNamespace="http://beispiel/"
| xmlns:tns="http://beispiel/"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema"
| xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
| xmlns="http://schemas.xmlsoap.org/wsdl/">
| <types>
| <xs:schema targetNamespace="http://beispiel/"
| version="1.0" xmlns:tns="http://beispiel/"
| xmlns:xs="http://www.w3.org/2001/XMLSchema">
| <xs:element name="createAccount" type="tns:createAccount" />
| <xs:complexType name="createAccount">
| <xs:sequence>
| <xs:element minOccurs="0" name="arg0"
| type="xs:string" />
| </xs:sequence>
| </xs:complexType>
| </xs:schema>
| </types>
| <message name="Asynchron_createAccount">
| <part name="createAccount" element="tns:createAccount" />
| </message>
| <portType name="Asynchron">
| <operation name="createAccount">
| <input message="tns:Asynchron_createAccount" />
| </operation>
| </portType>
| <binding name="AsynchronBinding" type="tns:Asynchron">
| <soap:binding style="document"
| transport="http://schemas.xmlsoap.org/soap/http" />
| <operation name="createAccount">
| <soap:operation soapAction="" />
| <input>
| <soap:body use="literal" />
| </input>
| </operation>
| </binding>
| <service name="AsynchronService">
| <port name="AsynchronPort" binding="tns:AsynchronBinding">
| <soap:address
| location="http://localhost:8080/Beispiel/Asynchron" />
| </port>
| </service>
| </definitions>
And I want to call this webservice from my bpel process:
| <bpws:variables>
| <bpws:variable messageType="ns0:PojoService_sayHello"
| name="PartnerLinkRequest" />
| <bpws:variable messageType="ns0:PojoService_sayHelloResponse"
| name="PartnerLinkResponse" />
| <bpws:variable messageType="ns0:Asynchron_createAccount"
| name="Request" />
| </bpws:variables>
| ........
| <bpws:assign name="Asyn" validate="no">
| <bpws:copy>
| <bpws:from><![CDATA['Hallo Welt!']]></bpws:from>
| <bpws:to part="createAccount" variable="Request" />
| </bpws:copy>
| </bpws:assign>
| <bpws:invoke inputVariable="Request"
| name="Invoke"
| operation="createAccount"
| partnerLink="Asynchron"
| portType="ns0:Asynchron" />
|
with
<plnk:partnerLinkType name="ASYNCHRONPLT">
| <plnk:role name="role4" portType="wsdl:Asynchron" />
| </plnk:partnerLinkType>
|
If I start the bpel process, the oneway webservice Asynchron is contacted, but the webservices receives only null and JBoss reports an error:
anonymous wrote : 22:26:41,893 INFO [STDOUT] Asynchron: null
| 22:26:41,903 ERROR [STDERR] [Fatal Error] :-1:-1: Premature end of file.
|
I recorded the bytes send to the application server with the TCP/IP-Monitor:
POST /Beispiel/Asynchron?datatype=SOAPMessage HTTP/1.1
| SOAPAction: ""
| Content-Type: text/xml; charset=UTF-8
| User-Agent: Java/1.5.0_10
| Host: localhost:8000
| Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
| Connection: keep-alive
| Content-Length: 239
|
| <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| <env:Header>
| </env:Header>
| <env:Body>
| <defaultNS:createAccount
| xmlns:defaultNS='http://beispiel/'>
| Hallo Welt!
| </defaultNS:createAccount>
| </env:Body>
| </env:Envelope>
|
Is there an error in this?
Furthermore I recorded the text send to the application server, when I call the webservice with the webservice explorer:
POST /Beispiel/Asynchron HTTP/1.1
| Host: localhost:8000
| Content-Type: text/xml; charset=utf-8
| Content-Length: 325
| Accept: application/soap+xml, application/dime, multipart/related, text/*
| User-Agent: IBM Web Services Explorer
| Cache-Control: no-cache
| Pragma: no-cache
| SOAPAction: ""
| Connection: close
| <soapenv:Envelope
| xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
| xmlns:q0="http://beispiel/"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
| <soapenv:Body>
| <q0:createAccount>
| <arg0>Hallo Welt!</arg0>
| </q0:createAccount>
| </soapenv:Body>
| </soapenv:Envelope>
I get the correct parameter in the jboss log: Hallo Welt!
anonymous wrote : 22:34:55,136 INFO [STDOUT] Asynchron.: Hallo Welt!
My question: Is it not possible to transfer parameters to a oneway webservice?
Best regards,
Frank
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4047070#4047070
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4047070
More information about the jboss-user
mailing list