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?


-Mario Aparicio
-- 
View this message in context: 
http://www.nabble.com/WSIF-vs.-OracleBPEL-%2C-namespace-issue-tf2107951.html#a5810320
Sent from the WSIF - User forum at Nabble.com.


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

Reply via email to