Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Spring Framework | Web Services | BioInformatics | Java Server Faces | Jboss 3.0 tutorial | Hibernate 3.0 | XML

Tutorial Categories: Ajax | Articles | JSP | Bioinformatics | Database | Free Books | Hibernate | J2EE | J2ME | Java | JavaScript | JDBC | JMS | Linux | MS Technology | PHP | RMI | Web-Services | Servlets | Struts | UML


 

Search Host

Monthly Fee($)
Disk Space (MB)
Register With us for Newsletter!
Visit Forum! Post Questions!
Jobs At RoseIndia.net!

Have tutorials?
Add your tutorial to our Java Resource and get tons of hits.

We offer free hosting for your tutorials. and exposure for thousands of readers. drop a mail
roseindia_net@yahoo.com
 
   

Tutorials

Java Server Pages

JAXB

Java Beans

JDBC

MySQL

Java Servlets

Struts

Bioinformatics

Java Code Examples

Interview Questions

 
Join For Newsletter

Powered by groups.yahoo.com
Visit Group! Post Questions!

Web Promotion

Web Submission

Submit Sites

Manual Submission?

Web Promotion Guide

Hosting Companies

Web Hosting Guide

Web Hosting

Linux

Beginner Guide to Linux Server

Frameworks

Persistence Framework

Web Frameworks

Free EAI Tools

Web Servers

Aspect Oriented Programming

Free Proxy Servers

Softwares

Adware & Spyware Remover

Open Source Softwares

BEGINNING   JAXB  ( PART-2)

  (Page-1)   (Page-2) (Page-3)

============================================

   In the second part of this tutorial on JAXB, the author gives a lab-oriented example to demonstrate the practical method of using the JAXB API.Two demos , one for Unmarshalling & the other for creating and marshalling , are  given

--------------------------------------------

    It is always very important to learn a new concept , by hands-on-experimentation,after getting a bird's eye view.So, we now take up a very simple example and see the step by step procedure.

We are  using jwsdp1.4   &   jdk1.4.2

-----------------------------------

   We have installed jwsdp1.4 in E: DRIVE.

   & installed jdk1.4.2 also in E: DRIVE.

Our working folder is: g:\jaxbdemo

------------------------------------------

In this working folder (g:\jaxbdemo), let us first create a dtd file , named , library.dtd, as follows: 

-------------------------------- 

<?xml   version="1.0" encoding="US-ASCII"   ?>

<!ELEMENT  library (fiction , biography ,science)>

<!ELEMENT   fiction (book)+>

<!ELEMENT   biography (book)+>

<!ELEMENT   science (book)+>

<!ELEMENT   book (#PCDATA)>

--------------------------------------------

The following file (g:\jaxbdemo\library.xml)

conforms to the above DTD.

-----------------------------------

<?xml version="1.0" ?>

<!DOCTYPE  library     SYSTEM "library.dtd">

<library>

  <fiction>

    <book>IVANHOE</book>

    <book>DAVID COPPERFIELD</book>

    <book>WAR AND PEACE</book>

  </fiction>

  <biography>

     <book>LIFE OF GANDHI</book>

     <book>ABRAHAM LINCOLN</book>

     <book>MARX AND ENGELS</book>

  </biography>

  <science>

    <book>MAN THE UNKNOWN</book>

    <book>EXPANDING UNIVERSE</book>

    <book>ORIGIN OF SPECIES</book>

  </science>

</library>

-----------------------------------------

Documentation by SUN & a number of tutorials in the web, ( cited as reference at the end of this tutorial) assume that we are using ANT build file. It is desirable that any tutorial illustrates the procedure without using ANT first, because understanding ANT scripts ,is difficult for beginners. It is easier to understand the script ,after doing it the path/classpath way.This  will give us  a clearer picture.

--------------------------------------

We begin by setting HOME as follows:

SET  JAVA_HOME=E:\JDK1.4.2

SET JWSDP_HOME=E:\JWSDP1.4

-------------------------------------------- 

   In this window, we give path as follows:

( one continuous line).

  g:\jaxbdemo\setpath.bat

   --------------------

    c:\windows\command;

    e:\jdk1.4.2\bin;

    e:\jwsdp1.4\jaxb\bin;

    e:\jwsdp1.4\jwsdp-shared\bin

********************************************

  We find the following files in:

   e:\jwsdp1.4\jaxb\lib.

jaxb-api.jar

jaxb-impl.jar

jaxb-libs.jar

jaxb-xjc.jar

--------------------------------------

We have to set classpath very carefully.

as , directed by Sun's documentation.

So, we create a batch file for this purpose.

Let us call this batchfile 'setcpath.bat'

g:\jaxbdemo>edit setcpath.bat

>set classpath=g:\jaxbdemo;

e:\jwsdp1.4\jaxb\lib\jaxb-api.jar;

e:\jwsdp1.4\jaxb\lib\jaxb-impl.jar;

e:\jwsdp1.4\jaxb\lib\jaxb-libs.jar;

e:\jwsdp1.4\jaxb\lib\jaxb-xjc.jar;

e:\jwsdp1.4\jswdp-shared\lib\namespace.jar;

e:\jwsdp1.4\jwsdp-shared\lib\jax-qname.jar;

e:\jwsdp1.4\jwsdp-shared\lib\xsdlib.jar

d:\jdk1.4\lib\tools.jar;

e:\jwsdp1.4\jwsdp-shared\lib\relaxngDatatype.jar

e:\jwsdp1.4\jaxp\lib\jaxp.jar

e:\jwsdp1.4\jaxp\lib\endorsed\dom.jar;

e:\jwsdp1.4\jaxp\lib\endorsed\sax.jar;

e:\jwsdp1.4\jaxp\lib\endorsed\xalan.jar;

e:\jwsdp1.4\jaxp\lib\endorsed\xercesImpl.jar;

( this is as per Sun documentation given at the end of this file).

 

(all these typed in a single line).

============================================

We set classpath for our dos window by running the setcpath.bat  file.

After this, we run the following command:

g:\jaxbdemo>xjc   -dtd   library.dtd  

 {
we may get a message that dom4j.jar is required and it should be placed in lib folder. dom4j is available in jwsdp1.0\common\lib) So, we copy dom4j.jar from jwsdp1.0\common\lib to jwsdp1.4\jaxb\lib folder).Run setcpath again.
We can now run the command without any problem. } 

we get the following  display in the console:

-----------------------------

parsing a schema...

compiling a schema...

generated\impl\runtime\UnmarshallingContext.java

generated\impl\runtime\SAXUnmarshallerHandler.java

generated\impl\runtime\PrefixCallback.java

generated\impl\runtime\Util.java

generated\impl\runtime\GrammarInfoFacade.java

generated\impl\runtime\UnmarshallerImpl.java

generated\impl\runtime\UnmarshallableObject.java

generated\impl\runtime\SAXMarshaller.java

generated\impl\runtime\ValidatableObject.java

generated\impl\runtime\ValidatingUnmarshaller.java

generated\impl\runtime\GrammarInfo.java

generated\impl\runtime\Discarder.java

generated\impl\runtime\SAXUnmarshallerHandlerImpl.java

generated\impl\runtime\InterningUnmarshallerHandler.java

generated\impl\runtime\MarshallerImpl.java

generated\impl\runtime\UnmarshallingEventHandler.java

generated\impl\runtime\ContentHandlerAdaptor.java

generated\impl\runtime\ErrorHandlerAdaptor.java

generated\impl\runtime\UnmarshallingEventHandlerAdaptor.java

generated\impl\runtime\NamespaceContextImpl.java

generated\impl\runtime\GrammarInfoImpl.java

generated\impl\runtime\NamespaceContext2.java

generated\impl\runtime\DefaultJAXBContextImpl.java

generated\impl\runtime\MSVValidator.java

generated\impl\runtime\AbstractUnmarshallingEventHandlerImpl.java

generated\impl\runtime\XMLSerializable.java

generated\impl\runtime\ValidatorImpl.java

generated\impl\runtime\XMLSerializer.java

generated\impl\runtime\ValidationContext.java

generated\impl\BiographyImpl.java

generated\impl\BookImpl.java

generated\impl\FictionImpl.java

generated\impl\JAXBVersion.java

generated\impl\LibraryImpl.java

generated\impl\ScienceImpl.java

generated\Biography.java

generated\Book.java

generated\Fiction.java

generated\Library.java

generated\ObjectFactory.java

generated\Science.java

generated\bgm.ser

generated\jaxb.properties

********************************************

  This is as should be.  No problem here.

********************************************

We need not give any package name, when giving the above command.

We need  not give any -d directive( for output folder), either.

So we get default package  name as 'generated'.

We get all the generated files in subfolders of our  working directory.

cd to  g:\jaxbdemo\generated.

Let us list the files there.

--------------------------------------------

G:\jaxbdemo\generated>dir

 Directory of G:\jaxbdemo\generated

Biography.java

Book.java

Fiction.java

Library.java

ObjectFactory.java

Science.java

bgm.ser

jaxb.properties

      10 File(s)         15,323 bytes   

=============================================

what files are  found in  g:\jaxbdemo\generated\Library.java?

--------------------------------

package generated;

public interface Library {

    /*

     *     {@link generated.Fiction}

     *     {@link generated.Biography}

     *     {@link generated.Science}

     */

    java.lang.Object       getContent();   

   

    void setContent(java.lang.Object value);

 

}

--------------------------------------------

   Thus, we understand that the 'generated'  folder  contains 'interface' files.

--------------------------------------------

   what do we find in  'generated\impl'  folder?

--------------------------------------------------

G:\jaxbdemo\GENERA~1\impl>dir

 Directory of G:\jaxbdemo\GENERA~1\impl

 

BiographyImpl.java

BookImpl.java

FictionImpl.java

JAXBVersion.java

LibraryImpl.java

ScienceImpl.java

           

--------------------------------------------------------------

We now cd to 'generated\impl\runtime' folder.

and list the files there.

-------------------------------------------------------

G:\jaxbdemo\GENERA~1\impl\runtime>dir

 Directory of G:\jaxbdemo\GENERA~1\impl\runtime

 

GrammarInfo.java

Discarder.java

SAXUnmarshallerHandlerImpl.java

InterningUnmarshallerHandler.java

MarshallerImpl.java

UnmarshallingEventHandler.java

ContentHandlerAdaptor.java

ErrorHandlerAdaptor.java

UnmarshallingEventHandlerAdaptor.java

NamespaceContextImpl.java

GrammarInfoImpl.java

NamespaceContext2.java

DefaultJAXBContextImpl.java

MSVValidator.java

AbstractUnmarshallingEventHandlerImpl.java

XMLSerializable.java

ValidatorImpl.java

XMLSerializer.java

ValidationContext.java

UnmarshallingContext.java

SAXUnmarshallerHandler.java

PrefixCallback.java

Util.java

GrammarInfoFacade.java

UnmarshallerImpl.java

UnmarshallableObject.java

SAXMarshaller.java

ValidatableObject.java

ValidatingUnmarshaller.java

       29 File(s)        177,213 bytes

          

********************************************

So far, as it should be,as mentioned in the documentation by SUN.!The files in 'runtime' folder are common to all applications. But, 'generated' and 'impl' folders contain a mixture of example-specific as well as general source files.

--------------------------------------------  Now, we should compile all these source files.Note the command very carefully.

  g:\jaxbdemo>javac

 generated\*.java   generated\impl\*.java 

generated\impl\runtime\*.java

( in a continuous line)

If there are any error messages, it can only be due to non-inclusion of any of the jar files mentioned above. Sometimes ( as the author did) , we make spelling mistakes in typing the name of the jar files or in their folder names. Unless we are able to compile these classes successfully, we CANNOT proceed further. It was found that we were able to compile without any problem,if we follow the steps meticulously.

-------------------------------------------

Now, we are ready to write and test a simple demo for utilising these classes.

-----------------------------------------------

Let us create lesson.java as follows:

// g:\jaxbdemo\lesson.java

import java.util.*;

import javax.xml.bind.*;

import java.io.*;

import generated.*;

class lesson

{

    public static void main(String args[])

    {

    try

    {

    JAXBContext         jContext=

JAXBContext.newInstance("generated");

    System.out.println("context ok");

 

    Unmarshaller      unmarshaller = jContext.createUnmarshaller() ;

    System.out.println("unmarshaller  ok");

 

    Library         lib = (Library)unmarshaller.unmarshal

(new   FileInputStream("library.xml")) ;

 

 System.out.println("library object ready");

 

   Fiction      fiction = lib.getFiction();

  System.out.println("fiction group is ready");

 

   List   list1 = fiction.getBook();

System.out.println("fiction-list is ready!");

    

      int  n = list1.size();

      System.out.println(""+n);

 

  ListIterator   k = list1.listIterator(0);

// be careful about the case! ListIterator

 

     while(k.hasNext())

         {

         Object  ob = k.next();

         Book   book1 = (Book)ob;

    System.out.println(book1.getContent());

         }  

    }

    catch(Exception e1)

    {System.out.println(""+e1);    }

 

    }

}

============================================

We can now compile lesson.java.

g:\jaxbdemo>javac lesson.java

(We are able to compile without hitch).

All that remains to be done is to run the program!We get the following result in the console.

G:\jaxbdemo>java lesson

context ok

unmarshaller  ok

library object ready

fiction is ready

fiction-list is ready!

3

IVANHOE

DAVID COPPERFIELD

WAR AND PEACE

============================================

Thus, our effort in using JAXB is a SUCCESS!

=

If we go to e:\jwsdp1.4\jaxb\samples  folder, we will find that there are 25 demo

examples, for various situations.Source code for each example also has been given.

 

Readers are encouraged to study the samples and experiment.  We can follow exactly same procedure .

---------------------------------------------

********************************************

=========================

This release of JAXB is contained in several JAR files:

JAXB jar files (contained in jwsdp1.4/jaxb/lib)

jaxb-api.jar

The javax.xml.bind interfaces and helper classes

jaxb-xjc.jar

The JAXB RI binding compiler classes

jaxb-impl.jar (formerly named jaxb-ri.jar)

The JAXB RI binding runtime framework classes

jaxb-libs.jar

Supporting classes for the binding compiler and the binding runtime framework

Supporting classes for the binding compiler and the binding runtime framework

JAXP jar files (contained in jwsdp-1.4/jaxp/lib and jwsdp-1.4/jaxp/lib/endorsed)

jaxp-api.jar

The javax.xml.parsers and javax.xml.transform components of JAXP

sax.jar

The APIs and helper classes for the Simple API for XML (SAX)

dom.jar

The APIs and helper classes for the Document Object Model (DOM)

xercesImpl.jar (v2.3.0)

The implementation classes for the SAX and DOM parsers, as well as Xerces-specific implementations of the JAXP APIs

xalan.jar

Xalan is an XSLT processor for transforming XML documents into other document types

Other JAR files

jax-qname.jar (contained in jwsdp-1.4/jwsdp-shared/lib)

A class for handling QNames shared by several JAX* technologies

namespace.jar (contained in jwsdp-1.4/jwsdp-shared/lib)

Classes for handling XML namespace contexts shared by several JAX* technologies

xsdlib.jar (contained in jwsdp-1.4/jwsdp-shared/lib)

XML Schema type library shared by several JAX* technologies (formerly contained in jaxb-libs.jar)

relaxngDatatype.jar (contained in jwsdp-1.4/jwsdp-shared/lib)

RELAX NG datatype library shared by several JAX* technologies (formerly contained in jaxb-libs.jar)

ant.jar (contained in apache-ant/lib)

Ant 1.5.4

DTD

The JAXB RI is shipped with experimental DTD support, which lets you compile XML DTDs.

To compile a DTD test.dtd, run the XJC binding compiler as follows:

$ xjc.sh -dtd test.dtd

All the other command-line options of the XJC binding compiler can be applied, no matter what schema language you use. Similarly, the XJC ant <http://jakarta.apache.org/ant/> task supports DTD. No matter what schema language you use, the generated code will be no different. You'll use the same JAXB API to access the generated code.  
*******************************************

  (Page-1)   (Page-2) (Page-3)

Visit: http://in.geocities.com/rsramsam/jaxb.htm for more tutorials.
  

Useful Links
  JDO Tutorials
  EAI Articles
  Struts Tutorials
  Java Tutorials
  Java Certification
Tell A Friend
Your Friend Name
Search Tutorials

 

 
Browse all Java Tutorials
Java JSP Struts Servlets Hibernate XML
Ajax JDBC EJB MySQL JavaScript JSF
Maven2 Tutorial JEE5 Tutorial Java Threading Tutorial Photoshop Tutorials Linux Technology
Technology Revolutions Eclipse Spring Tutorial Bioinformatics Tutorials Tools SQL
 

Home | JSP | EJB | JDBC | Java Servlets | WAP  | Free JSP Hosting  | Search Engine | News Archive | Jboss 3.0 tutorial | Free Linux CD's | Forum | Blogs

About Us | Advertising On RoseIndia.net

Send your comments, Suggestions or Queries regarding this site at roseindia_net@yahoo.com.

Copyright 2007. All rights reserved.