JAXB - Unrecognised Element Name Exception

I am not quite sure what is wrong here.
I have got a dtd file that has the following specification:
<!ELEMENT SomeElement (A,B?)>
<!ELEMENT AnotherElement (C | B)>
<!ELEMENT A(#PCDATA)>
<!ELEMENT C(#PCDATA)>
<!ELEMENT B (x,y,z)>
<!ELEMENT x(#PCDATA)>
<!ELEMENT y(#PCDATA)>
<!ELEMENT z(#PCDATA)>
And assume default binding schema.
I wrote a XML file based on the dtd and a java app to access the data.
The XML file
<SomeElement>
<A>Some Sentence</A>
<B>
<x>1</x>
<y>2</y>
<z>3</z>
</B>
</SomeElement>
<AnotherElement>
<C>123</C>
</AnotherElement>
During unmarshalling, it throws an UnrecognisedElementNameException: x
It seems that it cannot recognised element x, y and z.
I am pretty sure I have it defined in the dtd file so why is it complaining?
Can anyone shed some light on this for me?
Thanks

Let me attached the files. Perhaps that will ilustrate the problem better.
The dtd file
<!ELEMENT test (precondition, step+)>
<!ELEMENT precondition (description, include?)>
<!ELEMENT step (input|include)>
<!ELEMENT input (#PCDATA)>
<!ELEMENT include (testcaseid, scenarioid, (from, to?)?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT testcaseid (#PCDATA)>
<!ELEMENT scenarioid (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT to (#PCDATA)>
The xml file
<?xml version="1.0"?>
<!DOCTYPE test SYSTEM "abc.dtd">
<test>
<precondition>
<description>NONE</description>
</precondition>
<step>
<include>
<testcaseid>TID</testcaseid>
<scenarioid>SID</scenarioid>
<from>F</from>
<to>T</to>
</include>
</step>
</test>
The application file
import java.util.*;
import java.io.*;
import javax.xml.bind.*;
import javax.xml.marshal.*;
public class testABC {
/** Creates new testABC */
public testABC() {
* @param args the command line arguments
public static void main (String args[]) {
try{
File sFile = new File("abcfile.xml");
FileInputStream sis = new FileInputStream(sFile);
try{
Test t = Test.unmarshal(sis);
System.out.println("Completed");
}finally{
sis.close();
}catch(Exception e){
e.printStackTrace();
Assume default schema binding
The error:
Cannot recognised the element testcaseid when try to unmarshall include element
Thanks :-)

Similar Messages

  • JAXB - Unexpected end of element {} - UnmarshalException Exception

    Hi
    I am using Jaxb 1.0 Beta on AIX an I am getting javax.xml.bind.UnmarshalException exception when I try to unmarshall XML document. XML document and schema are valid ( I generated both using XML spy )
    Interestingly, the code works fine on windows 2000 but when I put the jar ,XML schema and xml document on unix it throws Unmarshall exception.
    Here's what I am trying to do.
    Code :
    JAXBContext jc =
    JAXBContext.newInstance( context,
    new com.xyz.retail.app.points.pgp.JAXBClassLoader());
    if(jc != null)
         System.out.println("Got the context");
    else
         System.out.println("Error in getting context");
    System.out.println("");
    // create an Unmarshaller
    Unmarshaller u = jc.createUnmarshaller();
    System.out.println("Created the Unmarshaller");
    System.out.println("");
    // Unmarshal securities document into Java content tree
    SecurityInfo securityInfo =
         (SecurityInfo)u.unmarshal( new FileInputStream( secFile ) );
    System.out.println("Unmarshaled the Document");
    System.out.println("");
    Schema :
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Yogesh
    -->
    <xs:schema targetNamespace="http://www.xyz.com/retail/app/points/pgp/util"
    xmlns="http://www.xyz.com/retail/app/points/pgp/util" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="SecurityInfo" type="SecurityInfoType"/>
    <xs:complexType name="SecurityInfoType">
    <xs:sequence>
    <xs:element ref="AirlinePartners"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="AirlinePartners">
    <xs:complexType>
    <xs:sequence>
    <xs:element ref="AirlinePartner" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="AirlinePartner">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="CardType" type="xs:string"/>
    <xs:element name="Description" type="xs:string" minOccurs="0"/>
    <xs:element name="TPrivate" type="xs:string"/>
    <xs:element name="TPassphrase" type="xs:string"/>
    <xs:element name="APublic" type="xs:string"/>
    <xs:element name="PlainText" type="xs:string"/>
    <xs:element name="CypherText" type="xs:string"/>
    <xs:element name="TKeyExpiry" type="xs:date" min
    Occurs="0"/>
    <xs:element name="AKeyExpiry" type="xs:date" min
    Occurs="0"/>
    </xs:sequence>
    </xs:complexType>
    /xs:element>
    </xs:schema>
    XML File :
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Yogesh
    -->
    <!--Sample XML file generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
    <SecurityInfo xmlns="http://www.xyz.com/retail/app/points/pgp/util"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=
    "http://www.xyz.com/retail/app/points/pgp/util /home/lcards/temp/APSecInfo.xsd">
    <AirlinePartners>
    <AirlinePartner>
    <CardType>x</CardType>
    <Description>some card</Description>
    <TPrivate>/home/lcards/temp/sachin.asc</TPrivate>
    <TPassphrase>worldcup2003</TPassphrase>
    <APublic>/home/lcards/temp/sunil.asc</APublic>
    <PlainText>/home/lcards/files/outbox/x</PlainText>
    <CypherText>/home/lcards/files/outbox/x</CypherText>
    <TKeyExpiry>2005-08-15</TKeyExpiry>
    <AKeyExpiry>2005-08-15</AKeyExpiry>
    </AirlinePartner>
    <AirlinePartner>
    <CardType>y</CardType>
    <Description>Another card</Description>
    <TPrivate>/home/lcards/temp/kapil.asc</TPrivate>
    <TPassphrase>worldcup1983</TPassphrase>
    <APublic>/home/lcards/temp/dilip.asc</APublic>
    <PlainText>/home/lcards/files/outbox/y</PlainText>
    <CypherText>/home/lcards/files/outbox/y</CypherText>
    <TKeyExpiry>2005-08-15</TKeyExpiry>
    <AKeyExpiry>2005-08-15</AKeyExpiry>
    </AirlinePartner>
    </AirlinePartners>
    </SecurityInfo>
    Output:
    Got the context
    Created the Unmarshaller
    DefaultValidationEventHandler: [ERROR]: Unexpected end of element {}:CardType
    javax.xml.bind.UnmarshalException: Unexpected end of element {}:CardType
    at com.sun.xml.bind.unmarshaller.UnreportedException.createUnmarshalExce
    ption(UnreportedException.java:59)
    at com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.reportAndThr
    ow(SAXUnmarshallerHandlerImpl.java:406)
    at com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.endElement(S
    AXUnmarshallerHandlerImpl.java:108)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknow
    n Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
    Dispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un
    known Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.xml.bind.unmarshaller.UnmarshallerImpl.unmarshal(Unmarshaller
    Impl.java:139)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
    arshallerImpl.java:129)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
    arshallerImpl.java:166)
    at com.xyz.retail.app.points.pgp.APSecurityInfoFactory.getAPSecInfo
    (APSecurityInfoFactory.java:102)
    at com.xyz.retail.app.points.pgp.EncryptAndSign.init(EncryptAndSign
    .java:183)
    at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
    ign.java:581)
    at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
    tFiles.java:149)
    Inside readKeys()
    java.lang.NullPointerException
    at com.xyz.retail.app.points.pgp.EncryptAndSign.readKeys(EncryptAnd
    Sign.java:215)
    at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
    ign.java:583)
    at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
    tFiles.java:149)
    Inside buildCypherTextFileName()
    java.lang.NullPointerException
    at com.xyz.retail.app.points.pgp.EncryptAndSign.buildCypherTextFile
    Name(EncryptAndSign.java:311)
    at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
    ign.java:667)
    at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
    tFiles.java:149)
    Exception in Main method
    Thanks in advance for any help.
    Yogesh.

    I'm having error. I'm using the lastest JWSDP (1.3) with JDK 1.4.2
    Here is my XML file:
    <?xml version="1.0"?>
    <dataQA>
    <table name="ELECTORAL_DISTRICT" >
    <rules>
    <rule number="1.1" description="Check if we have 301 EDs" >
    <query result="301" >
         <sql>SELECT COUNT(ED_ID) FROM ELECTORAL_DISTRICT</sql>
    </query>
    </rule>
    <rule number="1.3" description="All fields must be populated" >
    <query result="0" >
    <sql>SELECT COUNT(ED_ID) FROM ELECTORAL_DISTRICT WHERE ED_CODE IS NULL OR ED_NAMEE IS NULL OR ED_NAMEF IS NULL</sql>
    </query>
    </rule>
    </rules>
    <reports>
    <report number="1.4" name="Listing of EDs" file="ed_list" format="HTML" >
         <column name="ED_ID" label="ID" ></column>
         <column name="ED_CODE" label="Code" ></column>
         <column name="ED_NAMEE" label="English Name" ></column>
         <column name="ED_NAMEF" label="French Name" ></column>
         <column name="PRVNC_ID" label="Province ID" ></column>
    </report>
    </reports>
    </table>
    </dataQA>
    And my shema:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="dataQA" type="DataQAType"/>
    <xsd:complexType name="DataQAType">
    <xsd:sequence>
    <xsd:element name="table" type="TableType" minOccurs="1" maxOccurs="unbounded" />
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="TableType">
    <xsd:sequence>
    <xsd:element name="rules" type="RulesType" />
    <xsd:element name="reports" type="ReportsType" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" />
    </xsd:complexType>
    <xsd:complexType name="RulesType">
    <xsd:sequence>
    <xsd:element name="rule" minOccurs="1" maxOccurs="unbounded" >
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="query" type="QueryType" />
    </xsd:sequence>
    <xsd:attribute name="number" type="xsd:string" />
         <xsd:attribute name="description" type="xsd:string" />
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ReportsType">
    <xsd:sequence>
    <xsd:element name="report" minOccurs="1" maxOccurs="unbounded" >
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="column" type="ColumnType" minOccurs="1" maxOccurs="unbounded" />
    <xsd:element name="condition" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute name="number" type="xsd:string" />
    <xsd:attribute name="name" type="xsd:string" />
    <xsd:attribute name="file" type="xsd:string" />
    <xsd:attribute name="format" type="xsd:string" />
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ColumnType">
    <xsd:attribute name="name" type="xsd:string" />
    <xsd:attribute name="label" type="xsd:string" />
    </xsd:complexType>
    <xsd:complexType name="QueryType">
    <xsd:sequence>
    <xsd:element name="sql" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute name="result" type="xsd:string" />
    </xsd:complexType>
    </xsd:schema>
    I get the following exception:
    DefaultValidationEventHandler: [FATAL_ERROR]: Unexpected end of element {}:report
    Location: line 23 of file:/D:/Revise2.5/DataQA/config/test.xml
    javax.xml.bind.UnmarshalException: Unexpected end of element {}:report
    I'm currenlty in the processing of writting parser with DOM since I haven't found the yet. Is this a bug or I'm doing something wrong.
    Thanks in advance for the reply,
    - N. Thomassin

  • JAXB: Unexpected element

    Hi there,
    I am using JAXB.
    I have generated java classes by use of xjc. Let's say I have configured to generate the files in the java package "some.package". I use the classes in the following code snipped:
    JAXBContext jc = JAXBContext.newInstance(
         "some.package.simpson.bart:"+
         "some.package.simpson.lisa");
    Unmarshaller unmarshaller = jc.createUnmarshaller();
    Data data= (Data) unmarshaller.unmarshal(new File("c:\\test.xml"));When I try to unmarshall an xml document I get the following error/exception:
    DefaultValidationEventHandler: [ERROR]: Unexpected element {simpson:bart}:Data
    Location: line xx of file:/c:/test.xml
    javax.xml.bind.UnmarshalException: Unexpected element {simpson:bart}:Data
    Can you help me?
    Niko
    I have two related DTDs:
    <xs:schema targetNamespace="simpson:bart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:bart" elementFormDefault="qualified">
        <xs:element name="DataType" type="xs:string"/>
    </xs:schema>
    <xs:schema targetNamespace="simpson:lisa" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:lisa" elementFormDefault="qualified">
         <xs:element name="Data" type="xs:string"/>
    </xs:schema>My test.xml looks like this:
    <Data xmlns="simpson:lisa">
         <DataType xmlns="simpson:bart">someValue</DataType>
    <Data>

    Your schema tells me that the content of elements named "Data" should be of type "xs:string" and thus your instance document is not valid while it contains a nested element named "DataType".
    In order to parse your instance document, you need a schema that defines a complex type for the Data element that allows a nested DataType element... something like this:
    <xs:schema targetNamespace="simpson:lisa" xmlns:bart="simpson:bart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:lisa" elementFormDefault="qualified">
      <xs:import namespace="simpson:bart" schemaLocation="bart.xsd"/>
      <xs:element name="Data">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="bart:DataType"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

  • 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 error while invoking external web service

    Hi,
    In JDeveloper when I invoke external web service call, I am getting following exception
    "unexpected element name: expected=..."
    But the same application works fine in .NET. Can someone help me as to why I am getting the exception only in JDeveloper and how to fix this exception.
    Thanks.

    Hi,
    Without more information, it will be hard to help, and tell you what could be teh issue.
    Usually, this kind of error occurs when the payload and the WSDL schema are out of sync, for example if the order of the element on the wire do not match the order in a sequence declaration, you may get this error.
    In such case, .NET handle the XML as if it was a 'all' -- no specific order -- and deserialize the message properly.
    Hope this helps,
    -eric

  • 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?

  • Complex types with single array type element, marshaling exception

    For our JAXRPC web service, we have a complex type, as follows:
    <xs:complexType name = "SomeFault">
    <xs:sequence>
    <xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    </xs:complexType>
    <xs:simpleType name = "ErrorMessageWSType">
    <xs:restriction base = "xs:NMTOKEN">
    <xs:enumeration value = "INVALID_1"/>
    <xs:enumeration value = "INVALID_2"/>
    <xs:enumeration value = "INVALID_3"/>
    </xs:restriction>
    </xs:simpleType>
    We are running into Marshaling exceptions on the server side when the response/fault complex type has a single array type field.
    weblogic.wsee.codec.CodecException: Failed to encode
    com.bea.xml.XmlException: failed to find a suitable binding type for use in marshalling object "[Lnamespace.type.ErrorMessageWSType;@693767e9".  using schema type: t=SomeFault@http://namespace/SOME/v1 java type:namespace.type.ErrorMessageWSType[]
    If I change SomeFault, by adding another element, the error goes away.
    <xs:complexType name = "SomeFault">
    <xs:sequence>
    <xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" />
    <xs:element name = "dummyString" type="xsd:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    Am I doing something wrong during the wsdlc code generation or is this a known issue?
    <wsdlc srcWsdl="${wsdl.dir}/${wsdl.file.name}"
    destJwsDir="${gen.src.dir}/gen-src-jar"
    destImplDir="${main.src.dir}"
    packageName="${package.prefix}" type="JAXRPC">

    Any luck with this? I am running into the same error. Apparently, this is not an issue with Java binding, but when invoking remote EJBs, we run into this. I am running 10.1.3.1 and the error is:
    <fault>
    <bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
    <part name="summary">
    <summary>
    com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@e26dbf : Could not invoke 'getIdentityInfo'; nested exception is:
         org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </summary>
    </part>
    <part name="detail">
    <detail>
    org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
         oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
    </detail>
    </part>
    </bindingFault>
    </fault

  • JAXB unmarshalling elements with xs:type explicitly set

    I am working with XML content where the XSD defines an element as being of a complexType (say "ParentType") but the content explicitly sets the element's xs:type attribute to an extension of that complexType (say "ChildType").
    As far as I can tell the XML is valid, but JAXB issues the following when unmarshalling:
    DefaultValidationEventHandler: [ERROR]: Unexpected element {}:child1
    javax.xml.bind.UnmarshalException: Unexpected element {}:child1
    Where <child1> is added via the extension.
    Is this a problem with JAXB or my XSD?
    (XSD and XML enclosed below)
    XSD ------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:complexType name="ParentType">
    <xs:sequence>
    <xs:element name="parent1" type="xs:string"/>
    <xs:element name="parent2" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ChildType">
    <xs:complexContent>
    <xs:extension base="ParentType">
    <xs:sequence>
    <xs:element name="child1" type="xs:string"/>
    </xs:sequence>
    </xs:extension>
    </xs:complexContent>
    </xs:complexType>
    <xs:element name="root">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="child" type="ParentType"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    XML -----------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="problem.xsd">
    <child xsi:type="ChildType">
    <parent1/>
    <parent2/>
    <child1/>
    </child>
    </root>

    JAXB doesn't handle OO schema design. I tried to do something similar where I defined a type called base and then defined that my document contained 1 or more base elements. Then I tried to unmarshall a document that contained elements that were of types extending from base. I ended up with the same issue.
    It seems that when the xjc compiler defines the classes it isn't smart enough to realize the element defined as parent could also contain a child element since child extends parent. Your XSD and XML are valid.
    I would think that JAXB should identify that because there is a type the extends the defined type, that an element of the sub-type might be subsituted i.e. check the actual type of the element in the XML before attempting to unmarshall it as the default type. It doesn't do that. I am not sure if this is as desinged, or a flaw in the implementation.

  • JAXB: Nillable elements present in mashalled output

    Hi!
    I'm using JAXB to generate java objects and marshal them into XML.
    My schema contains various elements declared as nillable:
    <xs:element name="element1" type="xs:string" nillable="true">
    <xs:element name="element2" type="xs:string" nillable="true">
    <xs:element name="element3" type="xs:string" nillable="true">
    When I try to marshal the corresponding object using JAXB API I get the following XML:
    <element1 ns1:nil="true" xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"/>
    <element2 ns2:nil="true" xmlns:ns2="http://www.w3.org/2001/XMLSchema-instance"/>
    <element3>ABCD</element3>
    Is there anyway I can get the output with onely element3 and suppress the null values of element1 and element2 from the output XML so that it only looks like:
    <element3>ABCD</element3>
    Any help will be really appreciated!
    - Raj

    Instaed nillable=true in schema please use minOccurs=0 JAXB will take care of it then. When you specify nillable=true it implements that the element is requred but it can be null so for the jaxb to not generate those field you need to change the schema to minOccurs = 0 and if it can appear more than once maxOccurs=unbounded.

  • 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

  • JAXB 2.0 Marshaling Exception

    Hello,
    I ran into an error when trying marshal a java class. NullPointerException is caught when this line of code is executed. I previously used XJC to generate the Java classes including ObjectFactory.java in textjaxb.student package.
    JAXBContext jaxbContext = JAXBContext.newInstance("testjaxb.student");After searching for solution, I tried to use different method for loading ObjectFactory class into .netInstance(...);. I tried using thread/context classloader, testjaxb.student.ObjectFactory.class as parameter. But the problem still persist. Any suggestion will be helpful.
    The stacktrace shows the following:
    Exception in thread "main" java.lang.NullPointerException
            at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName(PropertyInfoImpl.java:287)
            at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName(PropertyInfoImpl.java:260)
            at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementPropertyInfoImpl.java:100)
            at com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(RuntimeElementPropertyInfoImpl.java:50)
            at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPropertyInfoImpl.java:42)
            at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
            at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:139)
            at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:49)
            at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:41)
            at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:189)
            at com.sun.xml.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:63)
            at com.sun.xml.bind.v2.model.impl.ModelBuilder.addRegistry(ModelBuilder.java:232)
            at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:201)
            at com.sun.xml.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:352)
            at com.sun.xml.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:350)
            at java.security.AccessController.doPrivileged(Native Method)
            at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:349)
            at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:215)
            at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
            at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55)
            at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:124)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)
            at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
            at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
            at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
            at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)Thank you very much.
    T-ra

    I had the same problem and resolved it by removing the elementFormDefault="qualified" form the schema tag.
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://www.calpers.ca.gov/soa/2006-12-21/CommonData.xsd"
    targetNamespace="http://www.calpers.ca.gov/soa/2006-12-21/CommonData.xsd"
    elementFormDefault="qualified">
         <xs:element name="commonData" type="tns:CommonDataType"/>
         <xs:complexType name="CommonDataType">
              <xs:sequence>
                   <xs:element name="defaultPayloadData" type="xs:string"/>
              </xs:sequence>
         </xs:complexType>
    </xs:schema>

  • Error rendering element. Exception: ORA-00942: table or view does not exist

    Guru,
    We are maintaining 10 internal Database through OEM 10g and using seesded reports.
    When we try to create simple custom reports against one of the Target database , its failing with following error message ,
    Query : select * from v$database
    Error rendering element.
    Exception: ORA-00942: table or view does not exist
    select * from dual & v$session working ( But query execution happeniing from Reposistory Database not from Target instance  )
    Note:
    I have reviewed thred "getting ORA-00942 while running report in GC"
    Please give some light .
    Regards,
    Raju

    This is an EM related question so I would suggest you post in the appropriate space "Enterprise Manager" -- https://forums.oracle.com/community/developer/english/enterprise_management/enterprise_manager/enterprise_manager_6
    You may also review (In Grid Control 10.2, Creating a Report to Query 'V$SESSION 'Fails: 'Error Rendering Element. Exception: ORA-00942 Table Or View Does Not Exist' (Doc ID 356755.1)) and implement the solution for v$database
    Thanks,
    Hussein

  • Element name too long when using ROWTYPE

    I've come across an issue with xml element names longer than 30 characters. Seems it has something to do with ROWTYPE. Creation of this function is successful:
    <pre>
    CREATE OR REPLACE FUNCTION test_fnc
    RETURN XMLTYPE
    AS
    var_return XMLTYPE;
    l_dummy DUAL.dummy%TYPE;
    BEGIN
    SELECT dummy INTO l_dummy FROM DUAL;
    SELECT XMLCONCAT(XMLELEMENT (
    "TEST",
    XMLFOREST (
    l_dummy "THIS_IS_OVER_30_CHARACTERS_LONG"
    data_set
    INTO var_return
    FROM DUAL;
    RETURN var_return;
    END test_fnc;
    </pre>
    However, specifying the variable as ROWTYPE gives ORA-00972 error (unless I shorten the element name...):
    <pre>
    CREATE OR REPLACE FUNCTION test_fnc
    RETURN XMLTYPE
    AS
    var_return XMLTYPE;
    l_dummy DUAL%ROWTYPE;
    BEGIN
    SELECT dummy INTO l_dummy FROM DUAL;
    SELECT XMLCONCAT(XMLELEMENT (
    "TEST",
    XMLFOREST (
    l_dummy.dummy "THIS_IS_OVER_30_CHARACTERS_LONG"
    data_set
    INTO var_return
    FROM DUAL;
    RETURN var_return;
    END test_fnc;
    </pre>
    Has anyone come across this before, or have any ideas for a solution? I could specify all my variables as TYPE but as there are many within the tables it would be easier to use ROWTYPE.
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    Thanks.

    it works if you add "AS" after l_dummy.dummy
    SQL> CREATE OR REPLACE FUNCTION test_fnc
      2     RETURN XMLTYPE
      3  AS
      4     var_return   XMLTYPE;
      5     l_dummy      DUAL%ROWTYPE;
      6  BEGIN
      7     SELECT   dummy INTO l_dummy FROM DUAL;
      8
      9     SELECT   XMLCONCAT(XMLELEMENT (
    10                           "TEST",
    11                           XMLFOREST (
    12                              l_dummy.dummy AS "THIS_IS_OVER_30_CHARACTERS_LONG"
    13                           )
    14                        ))
    15                 data_set
    16       INTO   var_return
    17       FROM   DUAL;
    18  RETURN var_return;
    19  END test_fnc;
    20  /
    Function created.Ants

  • XML element names required in lower case

    Hi,
    I am on release 4.6C
    I create an XML file from internal table using FM SDIXML_DATA_TO_DOM and SDIXML_DOM_TO_XML.
    The internal table is defined such that the  fieldnames of internal table are same as element names in XML file.
    The XML file gets created properly, but the element names appear in upper case.
    The requirement is to have it in lower case.
    Does anybody have any idea about how to control the case here?

    Hi Sudhir
    you can convert field names manually using translate command to convert it to lower case.
    hope this helps.

  • Simple Transformation with very long XML element names

    I am trying to write a program to deserialize XML documents using the Simple Transformation technique.  There are many optional elements in the XML document, so I need to have conditional statements statements to avoid trying to process elements that are not in the document.  The XML document, however, has several Element Names that are greater than 30 characters in length.  The Simple Transformation technique seems to require ABAP data dictionary structures that mirror the schema of the XML document.  But one cannot create structure component names that are greater than 30 characters in length.  We don't have any control over the XML schema as the XML documents come from the US government.  The ST fragment below shows the statement that I want to write, but since the ABAP Structure PlasticCardInformationGroup cannot have a component AuthorizationResponseInformation, the ST syntax checker yields an "Illegal Reference ADDITIONALPLASTICCARDINFORMATION" error message.
    Does anyone know a way to avoid this error?
    <tt:d-cond check="exist(TRS_TradingPartner_Agreement.TRS_FinancialTransaction.PlasticCardInformationGroup.AdditionalPlasticCardInformation)">
    <ns2:AdditionalPlasticCardInformation>
    <tt:attribute name="CardNetworkType" value-ref="TRS_TRADINGPARTNER_AGREEMENT.TRS_FINANCIALTRANSACTION.PLASTICCARDINFORMATIONGROUP.ADDITIONALPLASTICCARDINFORMATI.CARDNETWORKTYPE"/>
    <tt:attribute name="DraftLocatorNumber" value-ref="TRS_TRADINGPARTNER_AGREEMENT.TRS_FINANCIALTRANSACTION.PLASTICCARDINFORMATIONGROUP.ADDITIONALPLASTICCARDINFORMATI.DRAFTLOCATORNUMBER"/>
    </ns2:AdditionalPlasticCardInformation>

    could anyone help me?

Maybe you are looking for