<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>FW: [jdom-interest] Sealing violation</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Here's the response from Eric...I thought it went to the list, but it was send directly to me.</FONT>
</P>

<P><FONT SIZE=2>One additional question, is JDomServlet2 in a package?&nbsp; The code snippet doesn't reflect it, but on closer examination it looks like your problem might be with that file.</FONT></P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Eric Burke [<A HREF="mailto:burke_e@yahoo.com">mailto:burke_e@yahoo.com</A>]</FONT>
<BR><FONT SIZE=2>Sent: Thursday, March 08, 2001 12:42 PM</FONT>
<BR><FONT SIZE=2>To: Steven Smith</FONT>
<BR><FONT SIZE=2>Subject: RE: [jdom-interest] Sealing violation</FONT>
</P>
<BR>

<P><FONT SIZE=2>The &quot;sealing violation&quot; is always a CLASSPATH</FONT>
<BR><FONT SIZE=2>issue.&nbsp; Under Tomcat 3.x, Tomcat includes its</FONT>
<BR><FONT SIZE=2>own XML JAR files in your web app's </FONT>
<BR><FONT SIZE=2>environment. We found that we had to hand-edit</FONT>
<BR><FONT SIZE=2>Tomcat's startup scripts to modify the</FONT>
<BR><FONT SIZE=2>CLASSPATH.</FONT>
</P>

<P><FONT SIZE=2>Look inside of Tomcat's startup.bat (I'm assuming </FONT>
<BR><FONT SIZE=2>this is Windows). Somewhere in there you will</FONT>
<BR><FONT SIZE=2>see a lot of code that configures the</FONT>
<BR><FONT SIZE=2>CLASSPATH. Just make sure that Tomcat's</FONT>
<BR><FONT SIZE=2>older jaxp.jar and parser.jar appear</FONT>
<BR><FONT SIZE=2>AFTER any newer XML parsers and XSLT processors</FONT>
<BR><FONT SIZE=2>that you intend to use.</FONT>
</P>

<P><FONT SIZE=2>Another option is to move up to Tomcat 4.0.</FONT>
<BR><FONT SIZE=2>They have really cleaned up the CLASSPATH</FONT>
<BR><FONT SIZE=2>problems, although you will still have to</FONT>
<BR><FONT SIZE=2>get in there and provide updated JAR files</FONT>
<BR><FONT SIZE=2>in Tomcat's &quot;lib&quot; directory --- Tomcat 4.0</FONT>
<BR><FONT SIZE=2>still ships with an older XML parser. I</FONT>
<BR><FONT SIZE=2>believe you can just replace their version</FONT>
<BR><FONT SIZE=2>with a newer one.</FONT>
</P>

<P><FONT SIZE=2>I'm at a client site so I can't look at</FONT>
<BR><FONT SIZE=2>my files right now, otherwise I could</FONT>
<BR><FONT SIZE=2>provide more details. I hope this helps.</FONT>
</P>

<P><FONT SIZE=2>- Eric</FONT>
</P>
<BR>

<P><FONT SIZE=2>--- Steven Smith &lt;ssmith@neonsys.com&gt; wrote:</FONT>
<BR><FONT SIZE=2>&gt; What's the classpath look like for this servlet?</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -----Original Message-----</FONT>
<BR><FONT SIZE=2>&gt; From: JStalnecker@idssinfo.com</FONT>
<BR><FONT SIZE=2>&gt; [<A HREF="mailto:JStalnecker@idssinfo.com">mailto:JStalnecker@idssinfo.com</A>]</FONT>
<BR><FONT SIZE=2>&gt; Sent: Thursday, March 08, 2001 10:39 AM</FONT>
<BR><FONT SIZE=2>&gt; To: jdom-interest@jdom.org</FONT>
<BR><FONT SIZE=2>&gt; Subject: [jdom-interest] Sealing violation</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; I have just come across the jdom product thru an</FONT>
<BR><FONT SIZE=2>&gt; article on www.onjava.com</FONT>
<BR><FONT SIZE=2>&gt; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2><A HREF="http://www.onjava.com/pub/a/onjava/2000/12/15/xslt_servlets.html" TARGET="_blank">http://www.onjava.com/pub/a/onjava/2000/12/15/xslt_servlets.html</A>.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; I</FONT>
<BR><FONT SIZE=2>&gt; have made some changes the servlet and class.&nbsp; I am</FONT>
<BR><FONT SIZE=2>&gt; also using my own XSL.</FONT>
<BR><FONT SIZE=2>&gt; When I run my servlet(code below) I get the</FONT>
<BR><FONT SIZE=2>&gt; following error:</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; java.lang.ClassNotFoundException: class JDomServlet2</FONT>
<BR><FONT SIZE=2>&gt; :</FONT>
<BR><FONT SIZE=2>&gt; java.lang.SecurityException: sealing violation</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt; java.beans.Beans.instantiate(Beans.java:215)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt; java.beans.Beans.instantiate(Beans.java:55)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.Application.loadServlet(Application.java:1244)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.Invocation.getServlet(Invocation.java:292)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:409)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.AbstractRequest.service(AbstractRequest.java:393)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.PageCache$Entry.service(PageCache.java:252)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.PageCache.service(PageCache.java:103)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.VirtualHost.service(VirtualHost.java:395)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.Request.dispatch(Request.java:211)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:201)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java,</FONT>
<BR><FONT SIZE=2>&gt; Compiled Code)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>com.caucho.server.TcpConnection.run(TcpConnection.java,</FONT>
<BR><FONT SIZE=2>&gt; Compiled Code)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.Thread.run(Thread.java:479)</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; import java.io.*;</FONT>
<BR><FONT SIZE=2>&gt; import javax.servlet.*;</FONT>
<BR><FONT SIZE=2>&gt; import javax.servlet.http.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.apache.xalan.xslt.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.jdom.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.jdom.input.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.jdom.output.*;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; public class JDomServlet2 extends HttpServlet {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // reuse the same processor over and over</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private XSLTProcessor processor =</FONT>
<BR><FONT SIZE=2>&gt; XSLTProcessorFactory.getProcessor(</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new</FONT>
<BR><FONT SIZE=2>&gt; org.apache.xalan.xpath.xdom.XercesLiaison());</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext context = null;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // initialize the Servlet.&nbsp; This code is</FONT>
<BR><FONT SIZE=2>&gt; executed once.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; public void init(ServletConfig config) throws</FONT>
<BR><FONT SIZE=2>&gt; ServletException {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.init(config);</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; context = config.getServletContext();</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // handle a single request from the client</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; public void doGet(HttpServletRequest request,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response) throws</FONT>
<BR><FONT SIZE=2>&gt; IOException,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletException {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session =</FONT>
<BR><FONT SIZE=2>&gt; request.getSession(true);</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String xsltURL =</FONT>
<BR><FONT SIZE=2>&gt; request.getParameter(&quot;xsltURL&quot;);</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // read the XSLT stylesheet and</FONT>
<BR><FONT SIZE=2>&gt; cache it for future</FONT>
<BR><FONT SIZE=2>&gt; reuse</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream xsltStream =</FONT>
<BR><FONT SIZE=2>&gt; context.getResourceAsStream(xsltURL);</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StylesheetRoot parsedStylesheet =</FONT>
<BR><FONT SIZE=2>&gt; processor.processStylesheet(</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new</FONT>
<BR><FONT SIZE=2>&gt; XSLTInputSource(xsltStream));</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>
<BR><FONT SIZE=2>&gt; processor.setStylesheet(parsedStylesheet);</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType(&quot;text/html&quot;);</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // in a real app, the CreditInfo object</FONT>
<BR><FONT SIZE=2>&gt; would be retrieved</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // from an EJB component</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CustomerInfo ci = new</FONT>
<BR><FONT SIZE=2>&gt; CustomerInfo(&quot;100014&quot;, &quot;123 Main</FONT>
<BR><FONT SIZE=2>&gt; Street&quot;, &quot;Suite 12345&quot;,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;This is the third address</FONT>
<BR><FONT SIZE=2>&gt; line&quot;, &quot;Reading&quot;, &quot;PA&quot;,</FONT>
<BR><FONT SIZE=2>&gt; &quot;19607&quot;);</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // convert the JDOM into DOM</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document jdomDoc = ci.getDocument();</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.w3c.dom.Document domDoc =</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new</FONT>
<BR><FONT SIZE=2>&gt; DOMOutputter().output(jdomDoc);</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // transform the XML into HTML</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processor.process(new</FONT>
<BR><FONT SIZE=2>&gt; XSLTInputSource(domDoc),</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null,&nbsp; // use</FONT>
<BR><FONT SIZE=2>&gt; pre-compiled stylesheet</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new</FONT>
<BR><FONT SIZE=2>&gt; XSLTResultTarget(response.getWriter()));</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; import java.io.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.jdom.*;</FONT>
<BR><FONT SIZE=2>&gt; import org.jdom.output.*;</FONT>
<BR><FONT SIZE=2>&gt; import com.sun.java.util.collections.*;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; * Example of an object that knows how to represent</FONT>
<BR><FONT SIZE=2>&gt; itself as</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; * XML using JDOM.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; * @author Eric M. Burke</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; public class CustomerInfo implements Serializable {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private String number;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private String address1;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private String address2;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private String address3;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String city;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String state;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String zip;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // transient fields are not serialized.&nbsp; This</FONT>
<BR><FONT SIZE=2>&gt; prevents the potential</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // overhead of sending too much data between an</FONT>
<BR><FONT SIZE=2>&gt; EJB and the web tier</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private transient Document doc = null;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; private transient Element elem = null;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Construct a new data object.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; public CustomerInfo(String number, String</FONT>
<BR><FONT SIZE=2>&gt; address1, String address2,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String address3, String city, String</FONT>
<BR><FONT SIZE=2>&gt; state, String zip) {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.number = number;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.address1 = address1;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.address2 = address2;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.address3 = address3;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.city = city;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.state = state;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.zip = zip;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @return the contents of this object as an XML</FONT>
<BR><FONT SIZE=2>&gt; document.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; public Document getDocument() {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.doc == null) {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.doc = new Document(getElement());</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.doc;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * This method makes it possible to easily embed</FONT>
<BR><FONT SIZE=2>&gt; the output from</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * this data object into some other larger XML</FONT>
<BR><FONT SIZE=2>&gt; document.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @return the contents of this object as an</FONT>
<BR><FONT SIZE=2>&gt; Element, which is just</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * the root element without the XML declaration.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>=== message truncated ===</FONT>
</P>
<BR>

<P><FONT SIZE=2>=====</FONT>
<BR><FONT SIZE=2>Eric M. Burke</FONT>
<BR><FONT SIZE=2>Principal Software Engineer, Object Computing, Inc.</FONT>
<BR><FONT SIZE=2>314-494-3185 (mobile)</FONT>
<BR><FONT SIZE=2>636-978-3268 (home)</FONT>
<BR><FONT SIZE=2>burke_e@ociweb.com</FONT>
</P>

<P><FONT SIZE=2>__________________________________________________</FONT>
<BR><FONT SIZE=2>Do You Yahoo!?</FONT>
<BR><FONT SIZE=2>Get email at your own domain with Yahoo! Mail. </FONT>
<BR><FONT SIZE=2><A HREF="http://personal.mail.yahoo.com/" TARGET="_blank">http://personal.mail.yahoo.com/</A></FONT>
</P>

</BODY>
</HTML>