elena 2004/02/20 08:38:01
Modified: java/docs faq-general.xml
Log:
Add FAQ on Xerces serializers and classloaders
Revision Changes Path
1.40 +56 -0 xml-xerces/java/docs/faq-general.xml
Index: faq-general.xml
===================================================================
RCS file: /home/cvs/xml-xerces/java/docs/faq-general.xml,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- faq-general.xml 18 Feb 2004 22:27:06 -0000 1.39
+++ faq-general.xml 20 Feb 2004 16:38:01 -0000 1.40
@@ -38,6 +38,62 @@
</p>
</a>
</faq>
+ <faq title="ClassCastException using Xerces">
+ <q>Why do I get ClassCastException when I use Xerces and WebSphere Application
Server (WAS)?
+ </q>
+ <a>
+ <p>
+Xerces uses the <code>ObjectFactory</code> class to load some classes dynamically,
e.g. the parser configuration. The <code>ObjectFactory</code> finds the specified
implementation class by querying the system property, reading
<code>META-INF/services/factoryId</code> file or using a fallback classname. After the
implementation is found, the <code>ObjectFactory</code> tries to load the file using
the context classloader and if it is null, the <code>ObjectFactory</code> uses system
classloader.
+</p>
+<p>
+If you run Xerces in the environment, such as WAS, that has multiple classloaders
you might get ClassCastExceptions thrown from Xerces because different classloaders
might get involved in loading Xerces classes. For example, ClassCastExceptions may
occur when utility EAR classes that use Xerces load Xerces classes from WAR modules.
+</p>
+<p>
+We suggest you read <jump
href="http://www-106.ibm.com/developerworks/websphere/library/techarticles/0310_searle/searle.html">"Avoiding
ClassCastExceptions..."</jump> article which explains a workaround for this problem.
+Also you might want to read <jump
href="http://www-106.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer.html">"J2EE
Class Loading Demystified"</jump> article that explains how multiple classloaders
work in WAS.
+
+ </p>
+ </a>
+ </faq>
+ <faq title="Xerces HTML, XHTML, and XML Serializers">
+ <q>What can I use instead of Xerces HTML, XHTML, or XML serializers?
+ </q>
+ <a>
+<p>
+If you want to achieve interoperability, you should not be using Xerces
serialization code directly.
+Instead, the <jump href="http://java.sun.com/xml/jaxp/index.jsp">JAXP</jump>
Transformer API should be used to serialize HTML, XHTML, and SAX. The <jump
href="http://www.w3.org/DOM/DOMTR">DOM</jump> Level 3 Load and Save API (or JAXP
Transformer API) should be used to serialize DOM.
+</p>
+
+ <p>Using <jump href="http://java.sun.com/xml/jaxp/index.jsp">JAXP</jump> you
can serialize HTML and XHTML as follows:</p>
+
+<source>
+// Create an "identity" transformer - copies input to output
+Transformer t = TransformerFactory.newInstance().newTransformer();
+
+// for "XHTML" serialization, use the output method "xml"
+// and set publicId as shown
+t.setOutputProperty(OutputKeys.METHOD, "xml");
+
+t.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC,
+ "-//W3C//DTD XHTML 1.0 Transitional//EN");
+
+t.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd");
+
+// For "HTML" serialization, use
+t.setOutputProperty(OutputKeys.METHOD, "html");
+
+// Serialize DOM tree
+t.transform(new DOMSource(doc), new StreamResult(System.out));
+</source>
+
+<p>
+
+You can find more details about the future of Xerces serializers in the <jump
href="http://marc.theaimsgroup.com/?l=xalan-dev&m=107593381313807&w=2">archives</jump>.
+</p>
+<note>The HTML and XHTML serializers (<code>org.apache.xml.serialize</code>) have
been <code>deprecated</code> in Xerces 2.6.2 release. We might deprecate
<code>XMLSerializer</code> in the future release.</note>
+ </a>
+ </faq>
<faq title="Obtaining smaller jars">
<q>I don't need all the features Xerces provides, but I'm
running in an environment where space is at a premium. Is there
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]