JAXB - generation of extra java class.

Hi Everyone,
JDK 5, JWSDP 1.6
My XML Schema is:
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               elementFormDefault="qualified">               
  <xsd:element name="Participant">
     <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="ParticipantID" type="xsd:string"/>
            <xsd:element name="FirstName" type="xsd:string"/>
            <xsd:element name="LastName" type="xsd:string"/>
            <xsd:element name="Location" type="xsd:string"/>
            <xsd:element name="RoleID" type="xsd:string"/>
            <xsd:element name="EmailAddress" type="xsd:string"/>
            <xsd:element name="MobileNumber" type="xsd:string"/>
          </xsd:sequence>
     </xsd:complexType>
  </xsd:element>
</xsd:schema>When I run JAXB I get an extra Participant.java class generated along with a ParticipantType.java class. Participant.java extends ParticipantType.java. Why is it necessary to generate this extra interface? Wouldn't ParticipantType.java suffice?
TIA,
Claire.

probably, but using interfaces reduces the dependencies between client code and jaxb implementation, so as always, interfaces are a good thing.

Similar Messages

  • Generation of custom syncbo java classes does not work.

    Hello
    we created some new syncbo's for MAM 3.0 in the middleware and download it's correspond meRepMeta.xml.
    Now i will generate in the NetWeaver Developer Studio the manager and syncbo classes for our new custom syncbo's. I had create a new SmartSync-Project and deliver the meRepMeta.xml file, edit the package and some other things and start the project creation process. But after this, i have only an simple MI project with web.xml, meRepMeta.xml and so on, but no generated, custom syncbo's. In the documentation i couldn't find a detailed description for the generation of syncbo java classes.
    Can anybody help me, what i do wrong.
    Tanks a lot.
    Greetings
    Andreas

    Hi Kai,
    Just note these points..
    1)Smart Sync MI Applications (JSP Runtime) generated using SP 09v of Developer Studio is MCD specific.It is generating MCD specific files.This architecture makes the applications too complex during migration.
    2)In SP 09v applications, the developers don't have to code in Smart Sync API level as most of the codes are generated by default.
    3)Applications in SP 09v of Developer Studio is following the exact MVC Architecture(We can see the seperation of models, views and controllers here).
    4)Corresponding to the mapped fields (in SyncBo level), in the BO Wrapper classes we can see implementations of corresponding getter() and setter(..) methods.The names of this methods are totally dependent upon the names of fields mapped.So if there is change in the names of fields , in the case of already generated projects , we have to explicitly rename the getter() and setter(..) methods appropriately inorder to make the changes to take effect.
    5)For adding new JSP pages, we have to add references in many files(*.view). (we have to explicitly create the corresponding controller class file , map the relationship between the controller and the corresponding JSP file).
    refer this blog also..
    /people/kishor.gopinathan/blog/2006/05/29/smart-sync-application-development-using-sp-09v-of-developer-studio
    <<
    have to write the acces classes, mentioned in the MDK, manually for every new SyncBO I want to use?
    >>
         For that , we can write a generic method in such a way that , we only have to pass the syncbo name as the parameter for that method, so that it would retrieve the records corresponding to the syncbo given.
       Since the getter nd setter method names are closely related to the names of the mapped fields, this would create problems when we change the names of fields used in the table parameter or import parameter of the BAPI Wrapper used for syncbo creation.
    So using SP 11 , we can create generic applications, which can be migrated using the higher versions of NWD Studio. I think , SAP might not change this infrastructure anymore..
      Regards,
      Kishor Gopinathan

  • Converting java classes to an XSD, is there a tool?

    Or do I have to do this by hand. I was talking to someone who teaches this enterprise/webservice stuff and he said something to the effect that jaxb can convert my java classes to .xsd files, i don't see how this is possible (I see the other way, from .xsd to java classes). So did I just misunderstand him?

    thanks, I think he misunderstood me. I had done the .xsd files already, and he said I did to much work and there is programs out there to build them for me. It all came up in conversation cause I was curious if I had even built my .xsd files (cause my resulting web service is running oders of magnitude slower than when running my same code not through the web service) so I had just assumed I wrote bad xsd, code, or whathave you.

  • Generation of java classes from XML Schema.

    Hi All,
    I am working with JWSDP-2.0 but got stucked.:
    To generate Java classes from an XML Schema with the JAXB ,I need to have following jar file in thils location with this JWSDP-2.0
    <JWSDP>/jaxb/lib/jaxb-api.jar
    <JWSDP>/jaxb/lib/jaxb-impl.jar
    <JWSDP>/jaxb/lib/jaxb-libs.jar
    <JWSDP>/jaxb/lib/jaxb-xjc.jar
    <JWSDP>/jwsdp-shared/lib/namespace.jar
    <JWSDP>/jwsdp-shared/lib/jax-qname.jar
    <JWSDP>/jwsdp-shared/lib/relaxngDatatype.jar
    And here I m not finding as jaxb-libs.jar,namespace.jar and jax-qname.jar on respective location.
    If I m putting these left jar file from another place it is not generating all the classes as at least in number it should be 45 but it is generating merely 5 classes.
    Can any one help me regarding this.
    Regards.
    Shelly.

    These JAXB JAR files are for JAXB 1.0.
    For JAXB 2.0 the following JAR files are required.
    C:\Sun\jwsdp-2.0\jaxb\lib\jaxb-api.jar
    C:\Sun\jwsdp-2.0\jaxb\lib\jaxb-impl.jar
    C:\Sun\jwsdp-2.0\jaxb\lib\jaxb-xjc.jar
    C:\Sun\jwsdp-2.0\jwsdp-shared\lib\activation.jar
    C:\Sun\jwsdp-2.0\sjsxp\lib\jsr173_api.jar
    C:\Sun\jwsdp-2.0\sjsxp\lib\sjsxp.jar

  • Add java classes as Additional Classes to web service and JAXB 2.0 usage

    Hi,
    I start using JDeveloper 11g TP3 to create web service. I encounter two problems.
    1. I created a schema file as the following,
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://FromWSDL/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://FromWSDL/">
    <xsd:complexType name="sayHello">
    <xsd:sequence>
    <xsd:element name="arg0" type="xsd:string" default="Tommy"/>
    <xsd:element name="arg1" type="tns:arg1Enum"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="arg1Enum">
         <xsd:restriction base="xsd:string">
         <xsd:enumeration value="preserve"/>
         <xsd:enumeration value="replace"/>
         <xsd:enumeration value="collapse"/>
         </xsd:restriction>
    </xsd:simpleType>                         
    <xsd:element name="sayHello" type="tns:sayHello"/>
    <xsd:complexType name="sayHelloResponse">
    <xsd:sequence>
    <xsd:element name="return" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
    </schema>
    then I used TopLink/JPA-->JAXB 2.0 Content Model from Schema, I got four java files: Arg1Enum.java, ObjectFactory.java, SayHello.java, and SayHelloResponse.java.
    After, I create a java class with @WebService and @WebMethod annotation. Right Click on the web service class,
    select Web Service Properties-->Additional Classes, I added the four java classes. but there are error message for SayHello and Arg1Enum
    "the type SayHello cannot be serialized into XML and no custom serilizer has been defined for it"
    2. In JDeveloper, I create Java model from the above schema, then reverse the steps, create a new schema from Java Model, the original schema and the schema from Java Model are not same, especially for "defaultValue" and "required" fields for the custom element(SayHello and Arg1Enum).
    Any help will be appreciated

    First what you mean by "deploying classes as web services"? Chances are you
    can do it with something like Glue from The Mind Electric ... but chances
    are that you don't want to. What are you trying to accomplish?
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    Clustering Weblogic? You're either using Coherence, or you should be!
    Download a Tangosol Coherence eval today at http://www.tangosol.com/
    "Simon Wallis" <[email protected]> wrote in message
    news:[email protected]..
    Hi, can WebLogic deploy simple Java classes (not EJB's or JB's, just
    classes) as a web service? How easy it is to do?
    The WebLogic installation has one measly web services example, and it's an
    EJB which is not what I want to do.
    Thanks,
    Simon.

  • Setting the DTD in the JAXB generated Java Classes

    Hi All,
    I have generated the Java Source file for a DTD using the xjc tool that comes with JAXB .
    Now from the Class files i can unmarshall and get the XML file . But in the generated XML output file we don't have the <!DOCTYPE > Element which binds the XML to the DTD .
    Is it possible to specify the DTD ? If so Where can we specify that .
    Thanks for your help...
    Sateesh

    Parse the Dtd for a DOCUMENT_TYPE_NODE & create a <!DOCTYPE >element in the output xml.
    PrintWriter pw=new PrintWriter();
    if(node.getNodeType()==Node.DOCUMENT_TYPE_NODE){
    DocumentType doctype = (DocumentType)node;
    pw.print("<!DOCTYPE ");
    pw.print(doctype.getName());
    String publicId = doctype.getPublicId();
    String systemId = doctype.getSystemId();
    if (publicId != null) {
    pw.print(" PUBLIC '");
    pw.print(publicId);
    pw.print("' '");
    pw.print(systemId);
    pw.print('\'');
    else {
    pw.print(" SYSTEM '");
    pw.print(systemId);
    pw.print('\'');
    String internalSubset = doctype.getInternalSubset();
    if (internalSubset != null) {
    pw.println(" [");
    pw.print(internalSubset);
    pw.print(']');
    pw.println('>');}

  • JAXB to generate java classes for XSD.

    Hi
    I have a XSD, which is importing other couple of xsds in it, tried to generate java classes using xjc, it is throwing error.
    C:\vittal\Project\received\development-1\da_xsd>xjc -p com daAuthoring.xsd
    parsing a schema...
    [ERROR] Property "Alt" is already defined. Use <jaxb:property> to resolve thi
    s conflict.
      line 42 of file:/C:/vittal/Project/received/development-1/da_xsd/commonElement
    s.xsd
    [ERROR] The following location is relevant to the above error
      line 2205 of file:/C:/vittal/Project/received/development-1/da_xsd/daCommonEle
    ments.xsd
    Failed to parse a schema.Please let me know how to fix this issue.

    Thanks for information,
    I do understand xml well, and having basic knowledge on XSD.
    1. can i generate a java classes for a xsd which is including other XSDs.
    2. how to overwrite the issue, using annotation, point me to a location where i will get more information, that will be great help.
    here is my xsd.
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" xmlns:dctm="http://www.documentum.com" elementFormDefault="qualified">
         <xs:import namespace="http://dita.oasis-open.org/architecture/2005/" schemaLocation="ditaarch.xsd"/>
         <xs:import namespace="http://www.documentum.com" schemaLocation="dctmAttrs.ent.xsd"/>
         <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
         <xs:group name="alt">
              <xs:sequence>
                   <xs:element ref="alt"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="desc">
              <xs:sequence>
                   <xs:element ref="desc"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="title">
              <xs:sequence>
                   <xs:element ref="title"/>
              </xs:sequence>
         </xs:group>
         <!-- Elements in tblDecl.mod -->
         <xs:group name="colspec">
              <xs:sequence>
                   <xs:element ref="colspec"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="entry">
              <xs:sequence>
                   <xs:element ref="entry"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="row">
              <xs:sequence>
                   <xs:element ref="row"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="tbody">
              <xs:sequence>
                   <xs:element ref="tbody"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="tgroup">
              <xs:sequence>
                   <xs:element ref="tgroup"/>
              </xs:sequence>
         </xs:group>
         <xs:group name="thead">
              <xs:sequence>
                   <xs:element ref="thead"/>
              </xs:sequence>
         </xs:group>
    </xs:schema>

  • JAXB problem generating java classes

    I'm doing some integration and have received a schema from the vendor the other day. When I try to generate java classes with the jaxb compiler I get this output
    parsing a schema...
    [ERROR] Property "Value" is already defined.
      line 14 of jar:file:/C:/win32app/Java/jdk6/lib/tools.jar!/com/sun/xml/internal/xsom/impl/parser/datatypes.xsd
    [ERROR] The following location is relevant to the above error
      line 384 of file:/C:/code/sca-ecr.xsd
    Failed to parse a schema.
        <xsd:complexType name="options">
            <xsd:sequence>
                <xsd:element name="option" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:simpleContent>
                            <xsd:extension base="xsd:string">
    (Line 384)                  <xsd:attribute name="value" type="xsd:string"/>
                            </xsd:extension>
                        </xsd:simpleContent>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>So, googling about this I came across these to articles that almost describes my problem.
    http://weblogs.java.net/blog/kohsuke/archive/2005/05/compiling_mathm_1.html
    https://jaxb.dev.java.net/guide/Dealing_with_errors.htmlAdding the this code did not help. Downloading JAXB 2.1.4 did not help, adding the -extension parameter still same result.
            <xsd:annotation>
              <xsd:appinfo>           
                <jaxb:property name="someAttribute" />
              </xsd:appinfo>
            </xsd:annotation>      Why is jaxb failing ? Could it be that and attribute is not allowed to be called "value" ?
    Any answers will do
    regards abq

    Well, after hours of digging I found a solution which actually was right in front of me the whole time.
    This is how I edited the schema.
        <xsd:complexType name="options">
            <xsd:sequence>
                <xsd:element name="option" maxOccurs="unbounded" >
                    <xsd:complexType>
                        <xsd:simpleContent>
                            <xsd:extension base="xsd:string">
                               <xsd:attribute name="value" type="xsd:string" >
                                  <xsd:annotation><xsd:appinfo>
                                    <jaxb:property name="realValue" />
                                  </xsd:appinfo></xsd:annotation>
                                 </xsd:attribute>
                            </xsd:extension>
                        </xsd:simpleContent>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>Before, I placed the <xsd:annotation> tag efter the first line but inside the <xsd:attribute> made much better if you would like it to work.
    When marshling an @XmlRoot object will produce valid xml code. So even though that the server have a different xml schema, they will be able to talk to each other.
    abq

  • Map xsd complex type to existing java class without adding JAXB annotations

    Hello
    I've got a case where I should map an xsd complex type to an existing Java class without modifying that class, i.e. without adding JAXB annotations to that class.
    Is this possible somehow?
    As far as I've understood, the <javaType> declaration (adapter, parse/print methods) can only be used for xsd simple types.
    Thanks, Tom

    It should be possible to implement an XmlAdapter<...,...> which performs the required conversion between the original type and a JAXB-annotated type. Then, at the places where the original type is used, the @XmlJavaTypeAdapter annotation would be used.
    The xjc compiler supports this for xsd simple types (xjc:javaType annotation), but not for complex types.
    Any idea why this is restricted to simple types?
    Would it be possible to implement a xjc plugin which does this for complex types?
    Thanks Tom.

  • JAXB - Generated Java Classes error

    Hi,
    I am having a problem generating java classes given the follow snippet from a DTD. The ImplemenationData class that is generated does not include ImplementationPlatform and ProgramParameters as attributes. Instead, it includes these two elements in the PredicatedLists and then generates a content exception when those elements are not found. Can anyone tell me why these two elements are not being generated as attributes with the associated setter/getter methods to go with them? The ExeOptions, DllOptions and ExternalOptions are being generated properly and included in the PredicatedLists as they should be. Any help would be greatly appreciated.
    <!ELEMENT ImplementationPlatform           (#PCDATA)>
    <!ELEMENT ProgramParameters                (#PCDATA)>
    <!ELEMENT ImplementationData
         (ImplementationPlatform,
         ProgramParameters,
         (ExeOptions
         |DllOptions
         |ExternalOptions))>
    <!ELEMENT ExeOptions
         (PathAndFileName,
         WorkingDirectoryName?,
         Environment?,
         InheritEnvironment,
         StartInForeGround?,
         AutomaticClose?,
         WindowStyle?,
         RunInXTerm?)>
    <!ELEMENT DllOptions
         (PathAndFileName,
         EntryPointName,
         ExecuteFenced?,
         KeepLoaded?)>
    <!ELEMENT ExternalOptions
         (ServiceName,
         ServiceType,
         InvocationType,
         ExecutableName,
         ExecutableType,
         IsLocalUser,
         IsSecurityRoutineCall,
         CodePage?,
         TimeoutPeriod,
         TimeoutInterval?,
         IsMappingRoutineCall,
         MappingType?,
         ForwardMappingFormat?,
         ForwardMappingParameters?,
         BackwardMappingFormat?,
         BackwardMappingParameters?)>

    Just a thumb suck but, have you tried placing the defintitions after the declarations instead of before.
    Dave

  • Is there a way to create a Java class based on what's defined in a schema?

    I have a set of schemas that define what messages I will get as an XML stream (sent as UDP packets). Is there a way to parse the schemas into a set of java classes that match the fields in the schema? If so, next think would be to feed a string or byte array to instances of these objects and have a method that parses it and fills all the fields. But is the first part possible? Somebody linked http://www.cafeconleche.org/books/xmljava/chapters/ in another thread, but that seems to be for regular XML, not schema, unless I'm confused which is entirely possible, I'm new to XML and using it in Java in this way.

    For future reference, [Java API for XML Binding|http://www.dummies.com/WileyCDA/DummiesArticle/Building-Custom-Code-with-Java-API-for-XML-Binding-JAXB-.id-1489,subcat-BUILDING.html] (JAXB) allows for [generation of Java classes|http://www.oracle.com/technology/pub/articles/marx-jse6.html] from XML Schema (or even DTD) using its xjc compiler.

  • Generate XML Schema from Java classes?

    Hi,
    Considering an XML Mapping, i would like to generate a default XML Schema from my Java class.
    Is there a tool in toplink (10.1.3) to do that or does anyone have an easy way to generate this XML schema?
    Thanks,
    Ludovic

    Hi Ludovic,
    We don't have support for schema generation from Java classes in TopLink 10.1.3. It's required for JAXB 2.0 so it will be available in a future release.
    --Shaun                                                                                                                                                                                                                                                                                                                                                                           

  • Creating Web Service from Java Class-How to eliminate nillable="true"

    Does anyone know how to eliminate the attribute, nillable="true", from the element tags which describe the parameters in the WSDL created when creating a web service from a Java Class? It does this only for the string types. Is there something I need to set when creating the web service or before creating the web service? Or the only way is to modify this WSDL then recreate the web service from the WSDL.
    example part of wsdl:
    this is in the <types> tag:
    <complexType name="getData">
    <sequence>
    <element name="schema" type="string" nillable="true"/>
    <element name="table_or_view_name" type="string" nillable="true"/>
    </sequence>
    </complexType>
    <complexType name="getDataResponse">
    <sequence>
    <element name="result" type="string" nillable="true"/>
    </sequence>
    </complexType>

    I did do this and I got the following error when deploying to the Stand-alone OC4j:
    Operation failed with error:
    Error compiling
    :D:\h\cots\Oracle\JDeveloper10g10.1.3\j2ee\home\applications\DBOperationsWSApp-DBData-WS\WebServices: Error instantiating compiler: webservice artifact generation failed :oracle.j2ee.ws.common.tools.api.ValidationException : Exception declaration mismatch between Implementation: dbdatapackage.DBDataOperations and Interface: dbdatapackage.DBDataWS. Impl class Method: getData declares exceptions not declared by the interface (java.lang.Exception)
    I am quite sure what it is saying. It generated the code for the Interface: dbdatapackage.DVDataWS. Impl class. Why would it not do it right? What expection is it complaining about? java.lang.Exception?

  • Default Code Generation for a Custom Class for an Application Module

    hi all
    Oracle® Fusion Middleware
    Fusion Developer’s Guide for Oracle Application Development
    Framework
    11g Release 1 (11.1.1)
    with Jdeveloper TP3 ,
    By default, the application module Java class will look similar to what you see in
    Example below when you've first enabled it. Of interest, it contains:
    ■ Getter methods for each view object instance in the data model
    ■ A main() method allowing you to debug the application module using the
    Business Components Browser
    [package devguide.model;
    import devguide.model.common.StoreServiceAM;
    import oracle.jbo.server.ApplicationModuleImpl;
    import oracle.jbo.server.ViewLinkImpl;
    import oracle.jbo.server.ViewObjectImpl;
    // --- File generated by Oracle ADF Business Components Design Time.
    // --- Custom code may be added to this class.
    // --- Warning: Do not modify method signatures of generated methods.
    public class StoreServiceAMImpl extends ApplicationModuleImpl {
    /** This is the default constructor (do not remove) */
    public SRServiceImpl() { }
    /** Sample main for debugging Business Components code using the tester */
    public static void main(String[] args) {
    launchTester("devguide.model", /* package name */
    "SRServiceLocal" /* Configuration Name */);
    /** Container's getter for YourViewObjectInstance1 */
    public ViewObjectImpl getYourViewObjectInstance1() {
    return (ViewObjectImpl)findViewObject("YourViewObjectInstance1");
    // ... Additional ViewObjectImpl getters for each view object instance
    // ... ViewLink getters for view link instances here
    when i try this i didn't find the default generation for main method
    have i do something before enable custom java file for Application module
    hope to hear from you soon

    hi nonStop
    Since you are using Jdeveloper TP3, this might be a better place to ask your question:
    "JDeveloper and OC4J 11g Technology Preview"
    JDeveloper and OC4J 11g Technology Preview
    success
    Jan Vervecken

  • Forms 10.1.2 - Imported Java Classes are not running on JNI.NEW_OBJECT call

    Hi All,
    I've created a java class to call a webservice. This has been developed and tested in JDeveloper and works ok (using JDev Wizards - so it's generated code). I've created the JAR from it, imported the classes into Forms Builder and have my package and imported the java exception_ class too.
    So, everything compiles and looks good. When I run the application I can see in the console that my JAR is included in the loaded list. When I call the class (basing my code on the Forms Webservice example here on OTN) it doesn't work. I get the error ORA-6503 - function returns no value.
    I can step through the code in debug and it's in the generated constructor "new" function when the JNI.NEW_OBJECT is executed. I can't see into that so I'm a bit stuck ... I don't whether it's my java that is now failing or the system is failing to call it :
      FUNCTION new(
        a0    VARCHAR2) RETURN ORA_JAVA.JOBJECT IS
      BEGIN
        args := JNI.CREATE_ARG_LIST(1);
        JNI.ADD_STRING_ARG(args, a0);
        RETURN (JNI.NEW_OBJECT('oracle/forms/atrium/wsexport/proxy/AtriumExportWSSoapHttpPortClient', '(Ljava/lang/String;)V', args));
      END;Has anyone any experience or pointers for me ?
    Are there any extra JAR files I need to include in the CLASSPATH ?
    Forms Builder is 10.1.2.0.2, the Application Server is 10.1.2.3 and it JDeveloper 10 compiling Java 1.4. All on a Windows platform.
    TIA
    Steve

    Not sure if this is exact the document you are searching for, but this one works for me:
    http://www.oracle.com/technetwork/developer-tools/forms/webservices-forms-11g-094111.html
    It's for 11g, but I don't think there is much difference to 10g.
    Did you add your Jar file also to the classpath in the environment file of your webconfig?
    cheers
    Edit: too slow somehow -.- heading for a cup of black coffee
    Edited by: christian erlinger on 03.09.2010 01:18

Maybe you are looking for