Generating target-type xsd with element names in camelCase

Env: ODSI 10gR3, Workshop 10gR3, Oracle DB 10gR3
We are developing logical data services following a bottom up approach. The source physical data services that we use to build the logical ds have xsd definitions in which element names are in CAPS_CAPS naming convention (following the same names as the database tables). For example, FIRST_NAME, LAST_NAME, etc.
When we use Query Map to generate xsd for the target types of the logical ds, it generates element names that are also in the CAPS_CAPS convention. Is there a way to generate the target type xsd in which CAPS_CAPS names are converted to camelCase, e.g. FIRST_NAME becomes firstName.
Thank you in advance.

mixed-case with underscores removed vs. upper case is only one variation. Someone might like to rename SSN to SocialSecurityNumber, someone might like to rename LAST_NAME to Surname or FamilyName etc.
You can do any renaming etc. with a Logical Data Service. See the "Best Practices" which is posted as an Announcement in this forum.
Typically customers put their Physical (i.e. generated) data services in a Physical folder, and then create a parallel Logical folder (including the schemas folder). Then you would create new schemas in Logical/schemas with the new names, create new Logical data services to match the physical ones, then create a 'read' function that uses the physical read function and map the elements of the physical read function to the logical schema (with the new names). Then you can generate the create/delete/update procedures in the Logical data services.
Getting back to your original question - the answer is No. There is no feature with in ODSI to automatically transform element names to something else.
- Mike

Similar Messages

  • Generate target/out file with header record as Record Count ?

    Hi Kareem, Please try the below approach. Pipeline 1: Load actual data(without header with record count) from source to target. Let say your file name is intermediate1.dat Pipeline 2: Take the target from pipeline 1 as source and create the header with count of source file using an aggregator. The filename of target for pipeline 2 will be your final file(header and detail data). Pipeline 3: Take the target of pipeline 1 again and do 1-to-1 load to the target file of second pipeline. In session properties, dont forget to tick the check box append if exists for the third pipeline target. There may be other simple approaches also. If you have no time in hand try the above approach. Let me know if you find any issues. Thanks,Deeshan.

    Generate target/out file with header record as Record Count ? Out file:---------------------------Record Count :2000  Coulmn1, Column2...Data, data........

  • DatabaseProcedure with return type prefixed with schema name

    Hi (Paco)
    I have a question about the DatabaseProcedure class. We are using Oracle proxy users for our database connections.
    Everything is accessed via a database role that are granted to the logged on user. All our database objects, tables etc are protected with this database role.
    When I want to call a database function/procedure I need to add the schema name as a prefix to the custom database object that we uses for parameters/return types.
    So far so good. I can also define a parameter prefixed with schema name via the DatabaseProcedure.registerArrayType ...
    But when I try to define a function call that uses this parameter I get an error saying "Declaration is not valid".
    The problem is located to the PROCEDURE_DEFINITION regular pattern:
    private static final Pattern PROCEDURE_DEFINITION = Pattern.compile("\\s* (FUNCTION|PROCEDURE) \\s+ ([\\w.$]+) \\s* (?:\\((.*?)\\))? \\s* (?:RETURN\\s+(\\w+))? \\s* ;? \\s*", CASE_INSENSITIVE | COMMENTS | DOTALL); The return type cannot be prefixed with the schema name.
    Any good suggestions or workarounds?!
    I actually did change the pattern runtime via reflection to make it work - but I really don't like this solution in the long run!
    /Torben
    Edited by: Zonic on 2013-05-07 10:52

    Hi Torben,
    I think I have a workaround for the issue that might work for you. If you look at the source of <font face="courier">DatabaseProcedure.registerArrayType</font> you find that it actually calls <font face="courier">DatabaseProcedure.registerCustomParamType</font>.
    public static void registerArrayType(String name)
      registerCustomParamType(name, Types.ARRAY, Array.getORADataFactory(), name);
    }As a workaround you could replace your calls to <font face="courier">DatabaseProcedure.registerArrayType</font> with calls to <font face="courier">DatabaseProcedure.registerCustomParamType</font> as follows.
    // Instead of DatabaseProcedure.registerArrayType("NAME.WITH.DOTS") call:
    DatabaseProcedure.registerCustomParamType("anyNameWithoutDots", Types.ARRAY, Array.getORADataFactory(), "NAME.WITH.DOTS"); // Don't forget to use uppercase here.
    DatabaseProcedure dp = DatabaseProcedure.define("procedure my.procedure(param1 in out anyNameWithoutDots)");
    DatabaseProcedure.ParamType type = dp.getParamDef(0).getType();
    System.out.println(type.getName() + " is " + type.getTypeName()); // ANYNAMEWITHOUTDOTS is NAME.WITH.DOTSThis way you don't have to use the "illegal" name in the DatabaseProcedure definition.
    Regards,
    Paco van der Linden

  • How to import XSD with same name

    Hi,
    I have a Parent XSD which imports 3 XSD's.
    The parents XSD name and one of the imported XSD name is same in the XSD.
    Say for Ex: 1.xsd is a parent
    which import 2.xsd , 3.xsd & 1.xsd ( from different directory - import path in the XSD is different - <xsd:import namespace="www.localdomain.com/1.xsd" schemaLocation="C:/container/path/1.xsd"/>
    where as the parent 1.xsd is in c:/jms/path/1.xsd
    So whenever i import into the workshop it is giving me compilation error.
    How to fix this ? pls help.
    Thanks,
    -Raj..

    You can try like below.
         var oObject = xfa.resolveNode("Object[1]");
         xfa.host.messageBox("" + oObject.rawValue);
    Thanks
    Srini

  • Type cast with string name

    I have a hashtable full of Objects. I also have there type represented by a String. How can I typecast these Objects back to there type. i.e.
    String str = "helpme";
    str = (Object)str;
    String type = "String";
    can I use the var type to cast str back to a String;

    I've never used reflection before so my answer maybe way off from what you're looking for.... but to solve your problem on casting an Object to a type specified by a String variable you could use a case or if statement if you know what types are available ahead of time and call the appropriate methods to return your Object type.
    For example... You could create a method for each type you expect to return.
    public String getStringValue( Object obj ) {
         return (String)obj;
    public Integer getIntegerValue( Object obj ) {
         return (Integer)obj;
    public Byte getByteValue( Object obj ) {
         return (Byte)obj;
    }Then... depending on what the value of your String type variable is you can call the appropriate method that will return the Object type you're wanting.
    String type = "String";
    if( type.equals("String") )
         String yourStr = getStringValue(yourObject);
    else if( type.equals("Integer") )
         Integer yourInt = getIntegerValue(yourObject);
    else if( type.equals("Byte") )
         Byte yourByte = getByteValue(yourObject);This maybe not be the most efficient way especially since there can be potential errors but it can work assuming the String type is really representing the type of Object yourObject is.
    I don't know.. just a possible solution that popped in my head.
    .kim

  • Error message : unexpected element name:

    Hi people,
    I'm trying to consume an external web service and encountered the following error when trying to run the service in JDeveloper. I'm new to both java and WSDL. Please lend a helping hand. Thanks for your help in advance.
    Error:
    C:\JDeveloper\jdk\bin\javaw.exe -client -classpath C:\E900\DEMO\Java\classes;C:\JDeveloper\webservices\lib\jaxrpc-api.jar;C:\JDeveloper\webservices\lib\wsclient.jar;C:\JDeveloper\webservices\lib\wsserver.jar;C:\JDeveloper\webservices\lib\wssecurity.jar;C:\JDeveloper\webservices\lib\wsdl.jar;C:\JDeveloper\webservices\lib\orasaaj.jar;C:\JDeveloper\webservices\lib\saaj-api.jar;C:\JDeveloper\webservices\lib\orawsdl.jar;C:\JDeveloper\webservices\lib\orawsrm.jar;C:\JDeveloper\webservices\lib\jaxr_api.jar;C:\JDeveloper\webservices\lib\orajaxr.jar;C:\JDeveloper\webservices\lib\relaxngDatatype.jar;C:\JDeveloper\webservices\lib\jaxb-impl.jar;C:\JDeveloper\webservices\lib\jaxb-libs.jar;C:\JDeveloper\webservices\lib\xsdlib.jar;C:\JDeveloper\webservices\lib\mdds.jar;C:\JDeveloper\jlib\jaxen.jar;C:\JDeveloper\jlib\oraclepki.jar;C:\JDeveloper\jlib\ojpse.jar;C:\JDeveloper\jlib\osdt_core.jar;C:\JDeveloper\jlib\osdt_cert.jar;C:\JDeveloper\jlib\osdt_xmlsec.jar;C:\JDeveloper\jlib\osdt_wss.jar;C:\JDeveloper\jlib\osdt_saml.jar;C:\JDeveloper\jlib\repository.jar;C:\JDeveloper\jlib\ojmisc.jar;C:\JDeveloper\j2ee\home\lib\http_client.jar;C:\JDeveloper\j2ee\home\jazncore.jar;C:\JDeveloper\j2ee\home\oc4jclient.jar;C:\JDeveloper\rdbms\jlib\xdb.jar;C:\JDeveloper\diagnostics\lib\ojdl2.jar;C:\E900\DEMO\ini\sbf;C:\E900\System\Classes\Base_JAR.jar;C:\E900\System\Classes\BizLogicContainer_JAR.jar;C:\E900\System\Classes\BusinessLogicServices_JAR.jar;C:\E900\System\Classes\Connector.jar;C:\E900\System\Classes\EventProcessor_JAR.jar;C:\E900\System\Classes\Generator_JAR.jar;C:\E900\System\Classes\JdbjBase_JAR.jar;C:\E900\System\Classes\JdbjInterfaces_JAR.jar;C:\E900\System\Classes\JdeNet_JAR.jar;C:\E900\System\Classes\Maf2Base_JAR.jar;C:\E900\System\Classes\mafsecurity.jar;C:\E900\System\Classes\Metadata.jar;C:\E900\System\Classes\MetadataInterface.jar;C:\E900\System\Classes\PMApi_JAR.jar;C:\E900\System\Classes\SBFFoundation_JAR.jar;C:\E900\System\Classes\Spec_JAR.jar;C:\E900\System\Classes\System_JAR.jar;C:\E900\System\Classes\SystemInterfaces_JAR.jar;C:\E900\System\Classes\castor.jar;C:\E900\System\Classes\log4j.jar;C:\E900\System\Classes\xerces.jar;C:\E900\System\Classes\xml-apis.jar;C:\E900\System\Classes\Rijndael.jar;C:\E900\System\Classes\ManagementAgent_JAR.jar;C:\E900\System\Classes\commons-logging.jar;C:\E900\System\Classes\commons-codec-1.3.jar;C:\E900\System\Classes\commons-httpclient-3.0.jar;C:\E900\System\Classes\jmxremote.jar;C:\E900\System\Classes\jmxremote_optional.jar;C:\E900\System\Classes\jmxri.jar;C:\E900\System\Classes\rmissl.jar;C:\E900\misc\classes12.jar;C:\E900\misc\mssqlserver.jar;C:\E900\misc\msutil.jar;C:\E900\misc\msbase.jar;C:\E900\misc\db2java.zip;C:\E900\misc\jt400.jar;C:\E900\misc\sqljdbc.jar;C:\E900\misc\ojdbc5.jar;C:\JDeveloper\lib\xmlparserv2.jar;C:\JDeveloper\lib\xml.jar oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient
    calling http://XXX.XX.XXX.XX:8080/PSIGW/HttpListeningConnector
    *unexpected element name: expected={http://xxxx.xxxx.com}EnquiryByLegacyIdResponse, actual=EnquiryByLegacyIdResponse*
    at oracle.j2ee.ws.common.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:231)
    at oracle.j2ee.ws.common.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:159)
    at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub._deserialize_EnquiryByLegacyId(CrmCustomerServiceSoapBinding_Stub.java:348)
    at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub._readFirstBodyElement(CrmCustomerServiceSoapBinding_Stub.java:283)
    at oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java:335)
    at oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:114)
    at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub.enquiryByLegacyId(CrmCustomerServiceSoapBinding_Stub.java:238)
    at oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient.enquiryByLegacyId(CrmCustomerServiceClient.java:55)
    at oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient.main(CrmCustomerServiceClient.java:41)
    Process exited with exit code 0.
    --- the definition for java class "CrmCustomerServiceClient.java" ---_*
    package oracle.e1.bssv.J5500002.proxy;
    import oracle.webservices.transport.ClientTransport;
    import oracle.webservices.OracleStub;
    import javax.xml.rpc.ServiceFactory;
    import javax.xml.rpc.Stub;
    public class CrmCustomerServiceClient {
    private oracle.e1.bssv.J5500002.proxy.CrmCustomerService _port;
    public CrmCustomerServiceClient() throws Exception {
    ServiceFactory factory = ServiceFactory.newInstance();
    _port = ((oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceService)factory.loadService(oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceService.class)).getCrmCustomerService();
    * @param args
    public static void main(String[] args) {
    try {
    oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient myPort = new oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient();
    System.out.println("calling " + myPort.getEndpoint());
    // Add your own code here
    EnquiryByLegacyId test = new EnquiryByLegacyId ();
    test.setSETID("CTN");
    test.setCPL_LEGACY_ID("03-135452");
    //EnquiryByLegacyIdResponse response = new EnquiryByLegacyIdResponse();
    //response = myPort.enquiryByLegacyId(test);
    //EnquiryByLegacyIdResponse response = myPort.enquiryByLegacyId(test);
    CrmCustomerId cus = new CrmCustomerId();
    //cus = response.getEnquiryByLegacyIdReturn();
    cus = (myPort.enquiryByLegacyId(test)).getEnquiryByLegacyIdReturn();
    System.out.println("Your username is " + cus.getCUST_ID()+cus.getRESPOND_MSG());
    } catch (Exception ex) {
    ex.printStackTrace();
    * delegate all operations to the underlying implementation class.
    public EnquiryByLegacyIdResponse enquiryByLegacyId(EnquiryByLegacyId parameters) throws java.rmi.RemoteException {
    return _port.enquiryByLegacyId(parameters);
    public EnquiryByNationalIdResponse enquiryByNationalId(EnquiryByNationalId parameters) throws java.rmi.RemoteException {
    return _port.enquiryByNationalId(parameters);
    public EnquiryByNameResponse enquiryByName(EnquiryByName parameters) throws java.rmi.RemoteException {
    return _port.enquiryByName(parameters);
    public EnquiryByPhoneCellResponse enquiryByPhoneCell(EnquiryByPhoneCell parameters) throws java.rmi.RemoteException {
    return _port.enquiryByPhoneCell(parameters);
    * used to access the JAX-RPC level APIs
    * returns the interface of the port instance
    public oracle.e1.bssv.J5500002.proxy.CrmCustomerService getPort() {
    return _port;
    public String getEndpoint() {
    return (String) ((Stub) port).getProperty(Stub.ENDPOINT_ADDRESS_PROPERTY);
    public void setEndpoint(String endpoint) {
    ((Stub) port).setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, endpoint);
    public String getPassword() {
    return (String) ((Stub) port).getProperty(Stub.PASSWORD_PROPERTY);
    public void setPassword(String password) {
    ((Stub) port).setProperty(Stub.PASSWORD_PROPERTY, password);
    public String getUsername() {
    return (String) ((Stub) port).getProperty(Stub.USERNAME_PROPERTY);
    public void setUsername(String username) {
    ((Stub) port).setProperty(Stub.USERNAME_PROPERTY, username);
    public void setMaintainSession(boolean maintainSession) {
    ((Stub) port).setProperty(Stub.SESSION_MAINTAIN_PROPERTY, Boolean.valueOf(maintainSession));
    public boolean getMaintainSession() {
    return ((Boolean) ((Stub) port).getProperty(Stub.SESSION_MAINTAIN_PROPERTY)).booleanValue();
    * returns the transport context
    public ClientTransport getClientTransport() {
    return ((OracleStub) _port).getClientTransport();
    --- the definition for java class "EnquiryByLegacyIdResponse.java" ---_*
    package oracle.e1.bssv.J5500002.proxy;
    public class EnquiryByLegacyIdResponse implements java.io.Serializable {
    protected oracle.e1.bssv.J5500002.proxy.CrmCustomerId enquiryByLegacyIdReturn;
    public EnquiryByLegacyIdResponse() {
    public oracle.e1.bssv.J5500002.proxy.CrmCustomerId getEnquiryByLegacyIdReturn() {
    return enquiryByLegacyIdReturn;
    public void setEnquiryByLegacyIdReturn(oracle.e1.bssv.J5500002.proxy.CrmCustomerId enquiryByLegacyIdReturn) {
    this.enquiryByLegacyIdReturn = enquiryByLegacyIdReturn;
    __--- the definition for the WSDL" ---__+
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://xxxx.xxxx.com" xmlns:intf="http://xxxx.xxxx.com" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xxxx.xxxx.com">
    <!--WSDL created by Apache Axis version: 1.3
    Built on Oct 05, 2005 (05:23:37 EDT)-->
    <wsdl:types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xxxx.xxxx.com">
    <element name="EnquiryByLegacyId">
    <complexType>
    <sequence>
    <element name="SETID" type="xsd:string" />
    <element name="CPL_LEGACY_ID" type="xsd:string"/>
    </sequence>
    </complexType>
    </element>
    <element name="EnquiryByLegacyIdResponse">
    <complexType>
    <sequence>
    <element name="EnquiryByLegacyIdReturn" type="impl:CrmCustomerId"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="CrmCustomerId">
    <sequence>
    <element name="SETID" nillable="false" type="xsd:string"/>
    <element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
    <element name="CUST_ID" nillable="true" type="xsd:string"/>
    <element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
    </sequence>
    </complexType>
    <element name="EnquiryByNationalId">
    <complexType>
    <sequence>
    <element name="SETID" type="xsd:string"/>
    <element name="NATIONAL_ID" type="xsd:string"/>
    </sequence>
    </complexType>
    </element>
    <element name="EnquiryByNationalIdResponse">
    <complexType>
    <sequence>
    <element name="EnquiryByNationalIdReturn" type="impl:CrmCustomerId"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="CrmCustomerId">
    <sequence>
    <element name="SETID" nillable="false" type="xsd:string"/>
    <element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
    <element name="CUST_ID" nillable="true" type="xsd:string"/>
    <element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
    </sequence>
    </complexType>
    <element name="EnquiryByName">
    <complexType>
    <sequence>
    <element name="SETID" type="xsd:string"/>
    <element name="LAST_NAME" type="xsd:string"/>
    <element name="FIRST_NAME" type="xsd:string"/>
    <element name="ADDRESS1" type="xsd:string"/>
    </sequence>
    </complexType>
    </element>
    <element name="EnquiryByNameResponse">
    <complexType>
    <sequence>
    <element name="EnquiryByNameReturn" type="impl:CrmCustomerId"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="CrmCustomerId">
    <sequence>
    <element name="SETID" nillable="false" type="xsd:string"/>
    <element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
    <element name="CUST_ID" nillable="true" type="xsd:string"/>
    <element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
    </sequence>
    </complexType>
    <element name="EnquiryByPhoneCell">
    <complexType>
    <sequence>
    <element name="SETID" type="xsd:string" />
    <element name="PHONE_CELL" type="xsd:string"/>
    </sequence>
    </complexType>
    </element>
    <element name="EnquiryByPhoneCellResponse">
    <complexType>
    <sequence>
    <element name="EnquiryByPhoneCellReturn" type="impl:CrmCustomerId"/>
    </sequence>
    </complexType>
    </element>
    <complexType name="CrmCustomerId">
    <sequence>
    <element name="SETID" nillable="false" type="xsd:string"/>
    <element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
    <element name="CUST_ID" nillable="true" type="xsd:string"/>
    <element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
    </sequence>
    </complexType>
    </schema>
    </wsdl:types>
    <wsdl:message name="EnquiryByLegacyIdRequest">
    <wsdl:part element="intf:EnquiryByLegacyId" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByLegacyIdResponse">
    <wsdl:part element="intf:EnquiryByLegacyIdResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByNationalIdRequest">
    <wsdl:part element="intf:EnquiryByNationalId" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByNationalIdResponse">
    <wsdl:part element="intf:EnquiryByNationalIdResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByNameRequest">
    <wsdl:part element="intf:EnquiryByName" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByNameResponse">
    <wsdl:part element="intf:EnquiryByNameResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByPhoneCellRequest">
    <wsdl:part element="intf:EnquiryByPhoneCell" name="parameters"/>
    </wsdl:message>
    <wsdl:message name="EnquiryByPhoneCellResponse">
    <wsdl:part element="intf:EnquiryByPhoneCellResponse" name="parameters"/>
    </wsdl:message>
    <wsdl:portType name="CrmCustomerService">
    <wsdl:operation name="EnquiryByLegacyId">
    <wsdl:input message="intf:EnquiryByLegacyIdRequest" name="EnquiryByLegacyIdRequest"/>
    <wsdl:output message="intf:EnquiryByLegacyIdResponse" name="EnquiryByLegacyIdResponse"/>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByNationalId">
    <wsdl:input message="intf:EnquiryByNationalIdRequest" name="EnquiryByNationalIdRequest"/>
    <wsdl:output message="intf:EnquiryByNationalIdResponse" name="EnquiryByNationalIdResponse"/>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByName">
    <wsdl:input message="intf:EnquiryByNameRequest" name="EnquiryByNameRequest"/>
    <wsdl:output message="intf:EnquiryByNameResponse" name="EnquiryByNameResponse"/>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByPhoneCell">
    <wsdl:input message="intf:EnquiryByPhoneCellRequest" name="EnquiryByPhoneCellRequest"/>
    <wsdl:output message="intf:EnquiryByPhoneCellResponse" name="EnquiryByPhoneCellResponse"/>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="CrmCustomerServiceSoapBinding" type="intf:CrmCustomerService">
    <wsdlsoap:binding style=""/>
    <wsdl:operation name="EnquiryByLegacyId">
    <wsdlsoap:operation soapAction="#CPL_LEGACY_ID_ENQ#CCH_TEST"/>
    <wsdl:input name="EnquiryByLegacyIdRequest">
    <wsdlsoap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="EnquiryByLegacyIdResponse">
    <wsdlsoap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByNationalId">
    <wsdlsoap:operation soapAction="#CPL_NATIONAL_ID_ENQ#CCH_TEST"/>
    <wsdl:input name="EnquiryByNationalIdRequest">
    <wsdlsoap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="EnquiryByNationalIdResponse">
    <wsdlsoap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByName">
    <wsdlsoap:operation soapAction="#CPL_NAME_ENQ#CCH_TEST"/>
    <wsdl:input name="EnquiryByNameRequest">
    <wsdlsoap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="EnquiryByNameResponse">
    <wsdlsoap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="EnquiryByPhoneCell">
    <wsdlsoap:operation soapAction="#CPL_PHONE_CELL_ENQ#CCH_TEST"/>
    <wsdl:input name="EnquiryByPhoneCellRequest">
    <wsdlsoap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="EnquiryByPhoneCellResponse">
    <wsdlsoap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="CrmCustomerServiceService">
    <wsdl:port binding="intf:CrmCustomerServiceSoapBinding" name="CrmCustomerService">
    <wsdlsoap:address location="http://XXX.XX.XXX.XX:8080/PSIGW/HttpListeningConnector"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>

    I do not understand this WSDL! Its wrong!!
    For e.g. why is this section repeated so many times:
    <complexType name="CrmCustomerId">
    <sequence>
    <element name="SETID" nillable="false" type="xsd:string"/>
    <element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
    <element name="CUST_ID" nillable="true" type="xsd:string"/>
    <element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
    </sequence>
    </complexType>
    Also when creating what mapping did you choose? JAX-B or JAX-RPC?
    Try JAX-B.
    Venkat

  • Unexpected element name: expected WHEN INVOKING A WEB SERVICE

    I am pretty new to Web Services and need some helping in resolving the following error. I created following two classes and published one of the method savePerson. When I tried to invoke the webservice through my browser passing the following:
    <ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
    <ns1:sex>simpleType value</ns1:sex>
    <ns1:human>
    <ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
    <ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
    </ns1:human>
    </ns1:savePersonElement>
    I get the following error:
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://mypackage17/Person.wsdl/types">
    <env:Body>
    <env:Fault>
    <faultcode>env:Client</faultcode>
    <faultstring>caught exception while handling request: unexpected element name: expected={http://mypackage17/Person.wsdl/types}name, actual={http://mypackage17/Person.wsdl/types}sex</faultstring>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    But passing the following works fine as have passed all the parameters data:
    <ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
    <ns1:name>simpleType value</ns1:name>
    <ns1:sex>simpleType value</ns1:sex>
    <ns1:human>
    <ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
    <ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
    </ns1:human>
    </ns1:savePersonElement>
    Here is the code I have for the webservice:
    package mypackage17;
    *@oracle.ws.WebService name = "MyWebService2", serviceName = "MyWebService2", description = "", targetNamespace = "http://tempuri.org", schemaTargetNamespace = "http://mypackage17/Person.wsdl/types", endpointInterface = "mypackage17.MyWebService1SEI"
    *@oracle.ws.SOAPBinding style = "DOCUMENT", use = "LITERAL", documentWrapped = "true", bindingName = "MyWebService1SoapHttp", portName = "MyWebService1Port"
    public class Person extends Human
    private String name;
    private String sex;
    public Person(){}
    public void setName(String name)
    this.name = name;
    public void setSex(String sex)
    this.sex = sex;
    public String getName()
    return this.name;
    public String getSex()
    return this.sex;
    *@oracle.ws.DocumentWrapper requestType = "savePerson", requestElement = "savePersonElement", requestPart = "parameters", responseType = "savePersonResponse", responseElement = "savePersonResponseElement", responsePart = "parameters"
    *@oracle.ws.WebMethod operationName = "savePerson", description = "", oneway = "false", documentWrapped = "true", inputMessage = "MyWebService1SEI_savePerson", outputMessage = "MyWebService1SEI_savePersonResponse", responsePart = "result"
    *@oracle.ws.ParamPart position = "0", partName = "name", mode = "IN", soapHeader = "false"
    *@oracle.ws.ParamPart position = "1", partName = "sex", mode = "IN", soapHeader = "false"
    *@oracle.ws.ParamPart position = "2", partName = "human", mode = "IN", soapHeader = "false"
    public void savePerson(String name, String sex, Human[] human)
    System.out.println("Name: " + name);
    System.out.println("Sex: " + sex);
    System.out.println(human.length);
    System.out.println("1 First: " + human[0].getFirst());
    System.out.println("1 Last: " + human[0].getLast());
    System.out.println("2 First: " + human[1].getFirst());
    System.out.println("2 Last: " + human[1].getLast());
    /****** THE OTHER CLASS ********/
    package mypackage17;
    public class Human
    private String first;
    private String last;
    public Human(){}
    public void setFirst(String first)
    this.first = first;
    public void setLast(String last)
    this.last = last;
    public String getFirst()
    return this.first;
    public String getLast()
    return this.last;
    Here is the WSDL generated using JDeveloper 10.1.3:
    <?xml version="1.0" encoding="UTF-8" ?>
    <definitions
    name="MyWebService2"
    targetNamespace="http://tempuri.org"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://tempuri.org"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:ns1="http://mypackage17/Person.wsdl/types"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    >
    <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org" elementFormDefault="qualified"
    xmlns:tns="http://tempuri.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/">
    <import namespace="http://mypackage17/Person.wsdl/types"/>
    <complexType name="Human">
    <sequence>
    <element name="last" type="string" nillable="true"/>
    <element name="first" type="string" nillable="true"/>
    </sequence>
    </complexType>
    </schema>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mypackage17/Person.wsdl/types"
    elementFormDefault="qualified" xmlns:tns="http://mypackage17/Person.wsdl/types"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://tempuri.org">
    <import namespace="http://tempuri.org"/>
    <complexType name="savePerson">
    <sequence>
    <element name="name" type="string" nillable="true"/>
    <element name="sex" type="string" nillable="true"/>
    <element name="human" type="ns1:Human" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    </complexType>
    <complexType name="savePersonResponse">
    <sequence/>
    </complexType>
    <element name="savePersonElement" type="tns:savePerson"/>
    <element name="savePersonResponseElement" type="tns:savePersonResponse"/>
    </schema>
    </types>
    <message name="MyWebService1SEI_savePerson">
    <part name="parameters" element="ns1:savePersonElement"/>
    </message>
    <message name="MyWebService1SEI_savePersonResponse">
    <part name="parameters" element="ns1:savePersonResponseElement"/>
    </message>
    <portType name="MyWebService2">
    <operation name="savePerson">
    <input message="tns:MyWebService1SEI_savePerson"/>
    <output message="tns:MyWebService1SEI_savePersonResponse"/>
    </operation>
    </portType>
    <binding name="MyWebService1SoapHttp" type="tns:MyWebService2">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="savePerson">
    <soap:operation soapAction="http://tempuri.org:savePerson"/>
    <input>
    <soap:body use="literal" parts="parameters"/>
    </input>
    <output>
    <soap:body use="literal" parts="parameters"/>
    </output>
    </operation>
    </binding>
    <service name="MyWebService2">
    <port name="MyWebService1Port" binding="tns:MyWebService1SoapHttp">
    <soap:address location="http://192.168.2.101:8988/JavaWebService/MyWebService2"/>
    </port>
    </service>
    </definitions>
    Can someone tell what am I doing wrong. As it looks like I have to pass all the parameters for the method that is published but what if some are missing basically I want to keep all the parameters optional. How can I make the service to return the same what is passed when invoked. Any help is appreciated. I am using JDeveloper 10.1.3.

    To make the service return "whatever is passed", you have to take a step back and realize that there is a little understanding of XML Schema required.
    When using a complexType, which is defined as a sequence, then you are implying an ordered sequence of elements. Default value for the 'minOccurs' attribute is 1. It's also important to understand that there is a difference between minOccurs=0 and nillable="true".
    nillable="true" just means that the name element can carry a null value. If you want the name element to be optional, then you must use the minOccurs=0 and keep the maxOccurs to it's default value of 1. Using an array is just a bad work around. This is for deserialization (XML to JAVA).
    The second part of you problem is on the serialization (or JAVA to XML). When you have a JAVA Bean, there is no way to make the difference between a member's value being null or not set, so it's impossible to decide if you need to send back a nul (xsi:nil="true"), an empty element <ns1:name/> or nothing.
    That said, if you do want to go the XML route, you can use the dataBinding="false" flag in the different WSA command. Instead of converting XML into JAVA, you will have SOAPElement parameters, where you can do all you want (see WS user's guide [1] for details - chapter 16). Note that you have to make sure that the WSDL (your contract) reflect what you are doing on the wire (format of your messages), so that you do not geopardize your interoperability with other toolkit.
    Note that this only applies to literal message formats (use attribute in WSDL), which is your case.
    Hope this helps,
    Eric
    [1] http://download-west.oracle.com/otn_hosted_doc/ias/preview/web.1013/b14434.pdf

  • Specifying Case-Insensitive Element Names in XML Schema

    Hope someone knows this!
    Is it possible to define an an XML Schema Definition so that Element names in the target XML File can be case insensitive.
    At the moment my Parser throws an error if the element names in the XML file do not have the exact same case as the definition in the XML schema.
    E.g
    In Schema i have:
    <xsd:element name="HOSTINVENTORYLINE" type="HostInventoryLineType" maxOccurs="unbounded" minOccurs="0"/>
    but in xml file i have
    <HostInventoryLine field=""/>
    or
    <hostinventoryline field=""/>
    Does anyone know anyway to get around this, so that the parser accepts the HostInventoryLine element in the xml as an instance of the HOSTINVENTORYLINE element defined in the schema.
    Thanks in Advance
    JJ
    Message was edited by:
    [email protected]

    You could use substitution groups to handle this. You would need an entry in the schema for each valid capitalization. This won't scale well if you want to be completely case insensitive, but if you only support lower case, upper case, and camel case it should do the trick.
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:complexType name="HostInventoryLineType">
              <xs:sequence>
                   <xs:element name="an-element" type="xs:string"/>
              </xs:sequence>
         </xs:complexType>
         <xs:element name="HostInventoryLine" type="HostInventoryLineType"/>
         <xs:element name="HOSTINVENTORYLINE" type="HostInventoryLineType" substitutionGroup="HostInventoryLine"/>
         <xs:element name="hostinventoryline" type="HostInventoryLineType" substitutionGroup="HostInventoryLine"/>
    </xs:schema>-Blaise

  • Unexpected element name - confusion of types in client

    I have a web service definition that performs four operations:
    - String getTitle(long) - returns a title for a single asset
    - StringArrayType) getTitles(LongArrayType) - returns an ordered list of titles matching input list
    - AssetSummaryType getSummary(long) - Returns a complex type, summary information of an asset
    - AssetSummaryArrayType getSummaries(LongArrayType) - Returns an array of complex types
    Based on the WSDL (included at the bottom of this posting) I then generate the service
    endpoint using wscompile and -f:wsi option (JDK 1.4.2-05 and JWSDP-1.4).
    This is built into a raw war file and then cooked using wsdeploy.
    On the client side I create stubs using wscompile and -f:wsi and compile
    the resultant code. My client invokes each of the operations in turn, having been
    provided the relevant 'longs' as input.
    The service is deployed in JBoss-3.2.2 and the client is then executed from a separate JVM.
    I then see the following client error:
    java.rmi.RemoteException: Runtime exception; nested exception is:
    unexpected element name: expected={http://example.com/myAssetWebSvc}Str
    ingElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
    at com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(
    StreamingSender.java:318)
    at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:300
    at example.com.wsclient.asset.AssetService_Stub.getTitle(AssetService_St
    ub.java:175)
    at example.com.wsclient.asset.AssetClient.testAssetTitleRetrieval(AssetC
    lient.java:82)
    at example.com.wsclient.asset.AssetClient.main(AssetClient.java:51)
    Caused by: unexpected element name: expected={http://example.com/MyAssetWebSvc}
    StringElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
    at com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserial
    ize(LiteralSimpleTypeSerializer.java:106)
    at example.com.wsclient.asset.AssetService_Stub._deserialize_getTitle(As
    setService_Stub.java:318)
    at example.com.wsclient.asset.AssetService_Stub._readFirstBodyElement(As
    setService_Stub.java:276)
    at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:215
    ... 3 more
    If I deploy the same service with only the first two operations defined within wsdl,
    the error is not seen.
    I have also tried compilation on JWSDP 1.3 and JDK 1.4.1-03 and in this case the same error
    occurs but the other way around. The two 'title' operations work but the summary
    operations fail with the actual element encountered being a StringElement or StringArrayElement
    and the expected an AssetSummaryElement or AssetSummaryArrayElement.
    Further, if I change the name of the StringElement to for example 'MyStringElement', this is
    reported as the actual - i.e. there is no confusion with a standard type at play here.
    I also use handlers, one on the server side to inspect security information and one on the
    client to insert relevant details and look for returned errors within the header.
    Is this a known problem within JWSDP 1.3 and/or 1.4? Are there any workarounds.
    My wsdl is provided below along with the wscompile options and the matching configuration
    files used.
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions name="MyAssetService" targetNamespace="http://example.com/MyAssetWebSvc"
         xmlns:tns="http://example.com/MyAssetWebSvc"
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <wsdl:types>
    <xsd:schema targetNamespace="http://example.com/MyAssetWebSvc"
              xmlns:tns="http://example.com/MyAssetWebSvc"
              xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="AssetSummaryType">
    <xsd:all>
    <xsd:element name="createdBy" type="xsd:string" />
    <xsd:element name="createdDate" type="xsd:dateTime" />
    <xsd:element name="description" type="xsd:string" />
    <xsd:element name="fileSize" type="xsd:long" />
    <xsd:element name="id" type="xsd:long" />
    <xsd:element name="modifiedBy" type="xsd:string" />
    <xsd:element name="modifiedDate" type="xsd:dateTime" />
    <xsd:element name="organisation" type="xsd:string" />
    <xsd:element name="owner" type="xsd:string" />
    <xsd:element name="title" type="xsd:string" />
    <xsd:element name="type" type="xsd:string" />
    <xsd:element name="version" type="xsd:long" />
    </xsd:all>
    </xsd:complexType>
    <xsd:complexType name="ExceptionType">
    <xsd:all>
    <xsd:element name="rootCause" type="xsd:string" nillable="true" />
    </xsd:all>
    </xsd:complexType>
    <xsd:complexType name="LongArrayType">
         <xsd:sequence>
              <xsd:element name="LongItem" type="xsd:long" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AssetSummaryArrayType">
         <xsd:sequence>
              <xsd:element name="AssetSummaryItem" type="tns:AssetSummaryType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="StringArrayType">
         <xsd:sequence>
              <xsd:element name="StringItem" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="CredentialsType">
    <xsd:all>
    <xsd:element name="principal" type="xsd:string" />
    <xsd:element name="password" type="xsd:string" />
    </xsd:all>
    </xsd:complexType>
         <xsd:element name="LongElement" type="xsd:long"/>
    <xsd:element name="StringElement" type="xsd:string"/>
    <xsd:element name="LongArrayElement" type="tns:LongArrayType"/>
    <xsd:element name="StringArrayElement" type="tns:StringArrayType"/>
    <xsd:element name="AssetSummaryElement" type="tns:AssetSummaryType"/>
    <xsd:element name="AssetSummaryArrayElement" type="tns:AssetSummaryArrayType"/>
         <xsd:element name="CredentialsElement" type="tns:CredentialsType"/>
         <xsd:element name="ExceptionElement" type="tns:ExceptionType"/>
    </xsd:schema>
    </wsdl:types>
    <wsdl:message name="getSummaryMessage">
    <wsdl:part name="resourceId" element="tns:LongElement" />
    </wsdl:message>
    <wsdl:message name="getSummaryResponse">
    <wsdl:part name="assetSummary" element="tns:AssetSummaryElement" />
    </wsdl:message>
    <wsdl:message name="assetException">
    <wsdl:part name="exception" element="tns:ExceptionElement" />
    </wsdl:message>
    <wsdl:message name="getTitle">
    <wsdl:part name="resourceId" element="tns:LongElement" />
    </wsdl:message>
    <wsdl:message name="getTitleResponse">
    <wsdl:part name="assetTitle" element="tns:StringElement" />
    </wsdl:message>
    <wsdl:message name="getSummaries">
    <wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
    </wsdl:message>
    <wsdl:message name="getSummariesResponse">
    <wsdl:part name="assetSummaryList" element="tns:AssetSummaryArrayElement" />
    </wsdl:message>
    <wsdl:message name="getTitles">
    <wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
    </wsdl:message>
    <wsdl:message name="getTitlesResponse">
    <wsdl:part name="assetTitleList" element="tns:StringArrayElement" />
    </wsdl:message>
    <wsdl:message name="securityHeader">
    <wsdl:part name="credentials" element="tns:CredentialsElement" />
    </wsdl:message>
    <wsdl:portType name="AssetService">
    <wsdl:operation name="getSummary" parameterOrder="resourceId">
    <wsdl:input message="tns:getSummaryMessage" />
    <wsdl:output message="tns:getSummaryResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getTitle" parameterOrder="resourceId">
    <wsdl:input message="tns:getTitle" />
    <wsdl:output message="tns:getTitleResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getSummaries" parameterOrder="resourceIdList">
    <wsdl:input message="tns:getSummaries" />
    <wsdl:output message="tns:getSummariesResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getTitles" parameterOrder="resourceIdList">
    <wsdl:input message="tns:getTitles" />
    <wsdl:output message="tns:getTitlesResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="AssetServiceBinding" type="tns:AssetService">
    <wsdl:operation name="getSummary">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal" actor="security"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getTitle">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getSummaries">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getTitles">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    </wsdl:binding>
    <wsdl:service name="MyAssetService">
    <wsdl:port name="AssetServicePort" binding="tns:AssetServiceBinding">
    <soap:address location="http://localhost:9090/MyAssetWebSvc/asset" />
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    Here is the wscompile for the server - this is within an ant script that substitutes the variables specified:
    wscompile -keep -d ${path.classes} -s ${src.autojava} -import -model model.gz -f:wsi -f:documentliteral server-config.xml
    and this is the server config:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <wsdl location="file:///C:temp/MyAssetService_wsi.wsdl" packageName="example.com.wsserver.asset.wrapper">
    <handlerChains>
    <chain runAt="server">
    <handler className="example.com.wsserver.security.SecurityServerHandler">
    <property name="name" value="SecurityServerHandler"/>
    </handler>
    </chain>
    </handlerChains>
    </wsdl>
    </configuration>
    On the client side, here is the wscompile, again with ant variable substitution:
    wscompile -gen:client -keep -d ${path.build.wsclient.class} -s ${path.build.wsclient.autojava} -classpath ${path.build.wsclient.class} -f:wsi -f:documentliteral client-config.xml
    And here is the client config:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <wsdl location="file:///C:/temp/MyAssetService_wsi.wsdl" packageName="example.com.wsclient.asset">
    <handlerChains>
    <chain runAt="client">
    <handler className="example.com.wsclient.security.SecurityClientHandler">
    <property name="name" value="SecurityClientHandler"/>
    </handler>
    </chain>
    </handlerChains>
    </wsdl>
    </configuration>
    Note that I generate slightly different packages on client and server side. The server includes a 'wrapper' path on the package name - purely because the
    generated code wrappers an existent api that I am making available as a web service. This is not needed to be seen
    on the client side - i.e. the service appears as is without the wrapper.
    I have tried omitting the documentliteral from the wscompiles and this seems to have no effect.
    Any help gratefully received.
    Best regards
    Lawrence

    Thanks for the prompting. I was convinced that the error was occurring client side as I could see no activity on the server. However having captured the soap request and responses its evident that this is not the case (which I'm a little confused on based on my original tests, but the error makes more sense in this context).
    The request is below:
    <env:Envelope xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://example.com/myAssetWebSvc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Header>
    <ns1:mmsSecurity env:actor="security" env:mustUnderstand="1" xmlns:ns1="http://example.com/myAssetWebSvc">
    <principal>example.user</principal>
    <password>mypassword</password>
    </ns1:mmsSecurity>
    </env:Header>
    <env:Body>
    <ns0:LongElement>166333</ns0:LongElement>
    </env:Body>
    </env:Envelope>
    I can see from the body that the signature is not unique - its the same as that of the Summary operation. In this case, the server side is performing the summary (rather than the title that I had intended) and returning that response. This gives rise to the deserialisation error on the client side for the response.
    Presumably I need to move to the wrapped document literal style so that the request is uniquely identified on the server side.
    To me this was not an obvious gotcha, Could the parser (wscompile) be enhanced to trap identical request message definitions within a single service/endpoint definition (i.e. WSDL)? If so where should I post the request?

  • How to assign and transform or how to deal with xsd:anyType elements in 10g

    Hi,
    Any Update on this please...
    Hi,
    we are using canonical model as part of 10g, here I am not able to assign or tranform elements of type xsd:anyType to/from to other type elements. Solution with an example and quick reply is appreciated.
    =========================================
    Hi,
    By using copy-of xslt construct again input element structure is getting copied into the target mapper file, by using value-of xsl:construct just the value is getting assigned. Can you please elaborate on how to use this xsd:anyType elements in assign and tranform activities, overall how to use these elements in 10g, while implementing the canonical model.
    ex:
    xsl file: by using value-of
    <xsl:template match="/">
    <ns1:abstractRef>
    <ns1:amount>
    <xsl:value-of select="/ns1:BPELProcess1ProcessRequest/ns1:input"/>
    </ns1:amount>
    </ns1:abstractRef>
    </xsl:template>
    Result:
    <abstract1>
    -<abstractRef xmlns:ns1="http://xmlns.oracle.com/BPELProcess1" xmlns="http://sample/test">
    <ns1:amount>6556</ns1:amount>
    </abstractRef>
    </abstract1>
    Here amount is of type xsd;anyType which is present in the abstract complexType.
    xsl file: by using copy-of:
    <xsl:template match="/">
    <ns1:abstractRef>
    <ns1:amount>
    <xsl:copy-of select="/ns1:BPELProcess1ProcessRequest/ns1:input"/>
    </ns1:amount>
    </ns1:abstractRef>
    </xsl:template>
    Result:
    <abstract1>
    -<abstractRef xmlns:ns1="http://xmlns.oracle.com/BPELProcess1" xmlns="http://sample/test">
    <ns1:amount>
    <ns1:input>6556</ns1:input>
    </ns1:amount>
    </abstractRef>
    </abstract1>
    and while using it on assign activity, it is not assigning the input value to the xsd:anyType element, please provide an example on how to do this activity along with tranform.
    Edited by: user12679330 on Mar 1, 2010 4:46 AM

    >
    Try bpelx:append as a copy rule.
    >
    Since this thread is over three years old it will be interesting to see if OP is still waiting for a reply. ;)

  • JMS Queue XML: Elements with same name

    Hi
    I notice that ODI does not do a good job of reverse-engineering JMS queue models where an element name is referenced in different parts of the schema.
    For example:
    root
    ..body
    ...consignment
    ....load
    .....event
    ....unload
    .....event
    etc
    In the above, ODI will reverse-engineer the 'event' element under 'load', but not the one under 'unload'.
    I don't have control over the xsd models and was therefore wondering if there is some sort of workaround I can perform in this scenario?
    Cheers

    Actually, I just found the following Oracle note sums this up: 757642.1
    Is it possible to use the SAME ELEMENT as a SUB-ELEMENT in multiple DIFFERENT Elements of an XML File?
    If so, what is the impact of this approach on the reverse engineered Model and Datastores and how can Integration Interfaces be set up to map these identical ELEMENT for which the content is semantically different and as a result to be used differently in different Oracle Data Integrator (ODI) Integration Interfaces.
    The following XML is a simple example in which the ITEM Element is logically set as a sub-element to three other XML Elements:
    •Shoppinglist
    •GroceryStore
    •HardwareStore
    <Shoppinglist>
    <Item>ShoppingList</Item>
    <GroceryStore>
    <Item>Eggs</Item>
    <Item>Milk</Item>
    <Item>Bread</Item>
    </GroceryStore>
    <HardwareStore>
    <Item>Screwdriver</Item>
    <Item>Hammer</Item>
    <Item>Nails</Item>
    </HardwareStore>
    </Shoppinglist>Solution
    Such an approach must be avoided. This is a strict limitation of the ODI XML Driver.
    See Bug:8563428 DUPLICATE SUBELEMENTS WITH DIFFERETNT TYPES ARE NOT SUPPORTED BY XML DRIVER

  • Writing schema for multiple elements with same name with diff. content

    following is the XML file,
    <?xml version="1.0" encoding="utf-8"?>
    <e-abstract xmlns="http://www.citicorp.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="Deed.xsd">
    <deed>
    <deed_type>
    <deedtyp name="Quit Claim" value="Q" />
    <deedtyp name="sheriff's deed" value="Sheriff" />
    <deedtyp name="Warranty" value="W" />
    </deed_type>
    <deed>
    </e-abstract>
    --- end----
    in this I have 3 elements of deedtyp , how i can write them in .xsd file as these elements have same name?Please help, if u have idea about this...
    i have written .xsd up to deed_type,
    ----Deed.xsd----
    <? xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs="http://www.citicorp/2001/XMLSchema"
    targetNamespace="http://www.citicorp.com"
    xmlns="http://www.citicorp.com"
    elementFormDefault="qualified">
    <xs:element name="deed_type" type="string" use="required"/>
    <xs:simpleType name="string">
    <xs:restriction base="xs:string">
    </xs:restriction>
    </xs:simpleType>
    </xs:schema>

    I don't know the exact and complete specification of your intended schema...
    anyway, from what I can see in your post, I assume that
    <deed>
        <deed_type>
            <name>Quit Claim</name>
            <value>Sheriff</name>
        </deed_type>
        <deed_type>
            <name>sheriff's deed</name>
            <value>Sheriff</value>
        </deed_type>
        <deed_type>
            <name>Warranty</name>
            <value>W</name>
        </deed_type>
    </deed>would be the "proper" way to go...
    which makes your "deed_type" a complexType, including a sequence of two kinds of xs:string elements : "name" and "value"

  • Can i have xml elements with same name but one is having attrbt..?

    Hi all,
    I am suppose to take input from one system into BPEL.That system is auto gererating xml file. But that file is strange. It has two xml element with
    same name but with completely different sequence. First one is having two comlexTypes while second is having 5 simple types.
    Now the difference is First element is having attribute while second is not.
    So is that file is correct.?
    thanks a lot.
    /mishit

    can you post the file? or load the file into JDeveloper and check the syntax or use XMLSpy for validation of the XML.

  • To create 3 diff files with same content but with diff names in same target

    Hi SapAll.
    i have got a a requirement where pi need to create 3 different files with same content but with different names under same target from a single Idoc.
    its an IDOC to 3 File Inteface.
    can any body help me in providing the differnt solutions for this without use of any script executions.
    will be waiitng for response.
    regards.
    Varma

    > i want to use only one communication channel to produce 3 different file names with same content ,so here i should use only one message mapping in 3 operation mappings .
    This is not possible to produce 3 different file names with single CC. You have to use 3 different CCs. unless you have going to use some other trick e.g some script to rename the file etc..
    As I suggested in my previous reply use Multi-Mapping Or create 3 different Interface Mappings (by using the same MM).
    Note: You have to create 3 different Inbound Message Interfaces (you can use the same Inbound Message Type) otherwise while creating the 3 Interface Determination it won't allow because of same Outbound & Inbound Message Interface. It will simply say Interface alreday exists..
    So, just use the Multi-Mapping which is best solution in my opinion, because the benefit of using multi-mapping are:
    1. You have to create only single Message Mapping
    2. Single Interface Mapping
    3. Single Receiver Determination
    4. Single Interface Determination
    5. 3 Receiver CCs (3 you have to use in any case)
    6. Performance wise it is good (read the blog's last 2 para)
    7. And last but not the least easy to maintain the scenario.

  • Target XML Files with optional elements

    Hi All,
    I am using ODI 10.1.3.4. My task is to create an XML file of the following format:
    <parent count="2">
    <child>
    <name>Fred</name>
    <age>15</age>
    <email>[email protected]</email>
    </child>
    <child>
    <name>Bob</name>
    <age>5</age>
    *<email />*
    </child>
    </parent>
    I have been able to successfully create a target file. But the file does NOT contain the empty elements. ie the email element for Bob is missing from my target file.
    Is there any way to configure the XML connection or the "create xmlfile" command to output the empty element?
    Many Thanks
    Nat

    After speaking to BEA support it appears as though there is a partial solution to this issue. If you add the attributes minOccurs="0" nillable="true" to the elements then the SOAP message is correct. i.e.
    <xs:complexType name="SIDSearchCriteriaStructure">
    <xs:sequence>
    <xs:choice>
    <xs:element ref="SIDUniqueReference" minOccurs="0" nillable="true"/>
    <xs:element ref="SIDOtherCriteria" minOccurs="0" nillable="true"/>
    </xs:choice>
    </xs:sequence>
    </xs:complexType>
    I say that this is only a partial fix because elements cannot have minOccurs and nillable attribtes when they are references (as opposed to named elements - e.g. <xs:element name="SIDDNA" type="RestrictedStringType"/>). This is according to XMLSpy anyway. Don't know whether it's W3C legal though.
    Nick

Maybe you are looking for

  • How do I stop notifications to upgrade to Yosemite?

    I'm on 10.6.8. I keep getting notifications to upgrade to Yosemite. I don't want to upgrade because I've heard Yosemite caused problems and lag issues to Logic Pro 9. I don't want to keep getting the notifications to upgrade. I've refused so many tim

  • How do i get the new emojis if i skipped updating from 7.11 to 8.02

    How do I get the new emoticons when I skipped updating it from 7.11-8.02 and I don't see the new ones that other people have :/

  • Table for Delivery Loc

    Hi, Where can i find relation for Product and delivery location. Any table? Any FM? Regards Satish

  • ALE IDOC to XML IDOC scenario using XML port

    Hi, I am working on ALE IDOC to XML IDOC scenario using XML port . The requirement is to place a XML IDOC on the application server using ALE IDOC scenario ( output type is created in NACE which is ALE enabled ). Can anybody help me on the steps. Reg

  • RSS Folders aren't working

    In Snow Leopard Mail i could group similar RSS feeds into a folder and look at them all combined. Now that function isn't working, and my folders are saying that they will not longer update because there isn't a feed address associated with them.  Wh