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]
