Aparicio wrote:
> Hi fellow WSIF users.
> I am trying to create a simple client to call BPEL processes through the
> WSIF framework. I  use the Axis SOAP provider, but I seem to be running into
> some namespace issues. The BPEL process has a "process" method that takes in
> a person element consisting of name and address fields. The type is defined
> in an XSD imported into the wsdl. Here's the BPEL process' WSDL definition:
>
> ------------------------------------------------------------
> <definitions
>      name="ConvertPerson"
>      targetNamespace="http://ciber.no/ConvertPerson";
>      xmlns="http://schemas.xmlsoap.org/wsdl/";
>      xmlns:tns="http://ciber.no/ConvertPerson";
>      xmlns:ns1="http://types.ciber.no";
>      xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
>      xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>      xmlns:client="http://ciber.no/ConvertPerson";
>     >
>     <types>
>         <xsd:schema xmlns:client="http://ciber.no/ConvertPerson";
> xmlns:ns1="http://types.ciber.no";
> xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
>              xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>             <xsd:import namespace="http://types.ciber.no";
> schemaLocation="Person.xsd"/>
>         </xsd:schema>
>         <xsd:schema xmlns:client="http://ciber.no/ConvertPerson";
> xmlns:ns1="http://types.ciber.no";
>             
> xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>             <xsd:import namespace="http://types.ciber.no";
> schemaLocation="ConvertedPerson.xsd"/>
>         </xsd:schema>
>     </types>
>
>     <message name="ConvertPersonRequestMessage">
>         <part name="payload" element="ns1:person"/>
>     </message>
>     <message name="ConvertPersonResponseMessage">
>         <part name="payload" element="ns1:ConvertedPerson"/>
>     </message>
>     <portType name="ConvertPerson">
>         <operation name="process">
>             <input message="tns:ConvertPersonRequestMessage"/>
>
>             <output message="tns:ConvertPersonResponseMessage"/>
>         </operation>
>     </portType>
>     <binding name="ConvertPersonBinding" type="tns:ConvertPerson">
>         <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>         <operation name="process">
>             <soap:operation style="document" soapAction="process"/>
>             <input>
>                 <soap:body use="literal"/>
>
>             </input>
>             <output>
>                 <soap:body use="literal"/>
>             </output>
>         </operation>
>     </binding>
>     <service name="ConvertPerson">
>         <port name="ConvertPersonPort" binding="tns:ConvertPersonBinding">
>             <soap:address
> location="http://NOLMarApa:9700/orabpel/default/ConvertPerson/1.0"/>
>
>         </port>
>     </service>
>   <plnk:partnerLinkType name="ConvertPerson">
>     <plnk:role name="ConvertPersonProvider">
>       <plnk:portType name="tns:ConvertPerson"/>
>     </plnk:role>
>   </plnk:partnerLinkType>
> </definitions>
> -----------------------------------------------------------------------------------
>
>
>
> Here's the Person.xsd
> ---------------------------------------------------------------
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>             xmlns="http://types.ciber.no";
>             targetNamespace="http://types.ciber.no";
> elementFormDefault="qualified">
>   <xsd:element name="person">
>     <xsd:complexType>
>       <xsd:sequence>
>         <xsd:element name="name" type="xsd:string"/>
>         <xsd:element name="address" type="xsd:string"/>
>       </xsd:sequence>
>     </xsd:complexType>
>   </xsd:element>
>
> </xsd:schema>
> ------------------------------------------------------------------------------------------
>
>
> Here is my java code:
> -----------------------------------------------------------------------------------
> package no.ciber.wsiftest;
>
> import javax.xml.namespace.QName;
>
> import junit.framework.TestCase;
>
> import org.apache.wsif.WSIFMessage;
> import org.apache.wsif.WSIFOperation;
> import org.apache.wsif.WSIFPort;
> import org.apache.wsif.WSIFService;
> import org.apache.wsif.WSIFServiceFactory;
>
> public class Client extends TestCase {
>
>       
>               public void testProcess() {
>                       
>                       String wsdlLocation =
> "http://NOLMarApa:9700/orabpel/default/ConvertPerson/1.0/ConvertPerson?wsdl";;
>               
>                       
>                       WSIFServiceFactory factory = 
> WSIFServiceFactory.newInstance();
>                       try {
>                               WSIFService service = 
> factory.getService(wsdlLocation, 
>                                               null, 
>                                               "ConvertPerson", 
>                                               null, 
>                                               "ConvertPerson");
>                               
>                               
>                               service.mapType(new 
> QName("http://types.ciber.no","person";),
> Person.class);
>                               service.mapType(new 
> QName("http://types.ciber.no","ConvertedPerson";),
> ConvertedPerson.class);
>                               
>                               
>                               WSIFPort port = 
> service.getPort("ConvertPersonPort");
>                               WSIFOperation operation = 
> port.createOperation("process",
> "PersonConvertRequestMessage", "PersonConvertResponseMessage");
>                               
>                               WSIFMessage inputMessage = 
> operation.createInputMessage();
>                               WSIFMessage outputMessage = 
> operation.createOutputMessage();
>                               WSIFMessage faultMessage = 
> operation.createFaultMessage();
>                               
>                               Person request = new Person();
>                               request.setName("John Doe");
>                               request.setAddress("Mystreet 11");
>                               
>                               inputMessage.setObjectPart("payload", request);
>                               boolean success =
> operation.executeRequestResponseOperation(inputMessage, outputMessage,
> faultMessage);
>                               
>                               if(success== true) {
>                                       ConvertedPerson response = 
> (ConvertedPerson)
> outputMessage.getObjectPart("payload");
>                                       System.out.println("Recieved: " + 
> response.getResult());
>                               } else {
>                                       System.err.println("Something else 
> happened!");
>                               }
>                               
>                       } catch (Exception e) {
>                               e.printStackTrace();
>                       }       
>                       
>               }
>               
>               public static void main(String []args) {
>                       Client client = new Client();
>                       client.testProcess();
>               }
>               
> }
>
> -------------------------------------------------------------------------------------------------------
> The Person.java object representing the request element, is a simple
> JavaBean with name and address variables.
>
>
>
> What happens?
>
> When calling the BPEL process using this code, WSIF somehow mixes up the
> namespace of the Person object. A correct request message payload should be:
>
> <person xmlns="http://types.ciber.no";><name>John Doe</name><address>Mystreet
> 11</address></person></part>
>
> However, WSIF produces the following request object:
>
> <person><address>Mystreet 11</address><name>John Doe</name></person>
>
> As shown, WSIF omits the "http://types.ciber.no"; namespace in the <person>
> elements. This results in an error since the BPEL process can't resolve the
> xpath expression /ns1:person/ns1:name or ns1:address
>
> This call was made using the 2.0.1_IB3 . The 2.0 version also fails.
>
> Does anyone have a clue what's happening here?
>   

hi Mario,

hard to say - it would be useful to confirm that AXIS1 when used alone
is ending the XML messages you want. you may also want to enable
tracing/logging in WSIF (and AXIS) to see what is going on.

if possible also please try the latest pre-release 2.1.0 version (it
should have more recent AXIS jar used) from

http://people.apache.org/dist/ws/wsif/

thanks,

alek

-- 
The best way to predict the future is to invent it - Alan Kay


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to