Hello!
I am trying to compile multiple stylesheets at web-appserver-startup. I
have tried a couple of ways.
-------------------------------------
First way
-------------------------------------
The most simple sets the URL to an XSL resource and then sends it to:
public void newTransformer(URL xsl) {
XSLTC xsltc = new XSLTC();
xsltc.init();
xsltc.compile(xsl);
}
Doing this causes an Error in the compilation of the Init Servlet [Error 1 -
below]. I have the jaxp.properties file with the following entries:
javax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.runtime.Transf
ormerFactoryImpl
javax.xml.parsers.DocumentBuilderFactory=javax.xml.parsers.DocumentBuilderFa
ctory
javax.xml.parsers.SAXParserFactory=javax.xml.parsers.SAXParserFactory
-------------------------------------
Second way
-------------------------------------
If I try another way to compile the XSL, the System output says the
...xsltc.TransletTemplate@xxxxxs were created:
public void newTransformer(String id, URL xsl) {
File xslt_file = new File(xsl);
long xsl_last_mod = xslt_file.lastModified();
// CONTEXT = global ServletContext var - basically a Hashtable
Templates entry = (Templates) CONTEXT.getAttribute(id);
if (entry == null) {
Source xsl_source = new StreamSource(xslt_file);
TransformerFactory transfact = TransformerFactory.newInstance();
Templates templates = transfact.newTemplates(xsl_source);
System.out.println(id + " Templates Obj: " + templates);
// global ServletContext var - basically a Hashtable
CONTEXT.setAttribute(id, templates);
}
}
When I try to access the compiled XSL with the method directly below I get a
different error sent to the browser (500). They seem to be the same error
[Error 2 - below].
public void doTransform(String source_uri,
Templates style,
Hashtable params,
PrintWriter out)
throws FileNotFoundException, TransformerException {
try {
Transformer transformer = style.newTransformer();
transformer.transform ((Source) new InputSource(source_uri),
new StreamResult(out));
} catch (Exception e) {
out.write(e.getMessage());
e.printStackTrace(out);
}
}
----------------------------------------------
Please help. I don't understand what I am doing wrong.
Thanks!
-Rob
----------------------------------------------
ERRORS
===== ERROR 1 =================
[2001/10/02 12:01:19] de/fub/bytecode/generic/InstructionConstants
java.lang.NoClassDefFoundError: de/fub/bytecode/generic/InstructionConstants
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at org.apache.xalan.xsltc.compiler.XSLTC.<init>(XSLTC.java:138)
at
com.koberg.makecontent.InitMasterApp.newTransformer(InitMasterApp.java:60)
at com.koberg.makecontent.InitMasterApp.init(InitMasterApp.java:43)
at javax.servlet.GenericServlet.init(GenericServlet.java:82)
at com.caucho.server.http.Application.createServlet(Application.java:2212)
at com.caucho.server.http.Application.loadServlet(Application.java:2169)
at com.caucho.server.http.Application.initServlets(Application.java:1404)
at com.caucho.server.http.Application.init(Application.java:1359)
at com.caucho.server.http.VirtualHost.init(VirtualHost.java:456)
at com.caucho.server.http.ServletServer.initHosts(ServletServer.java:480)
at com.caucho.server.http.ServletServer.init(ServletServer.java:386)
at com.caucho.server.http.ServletServer.<init>(ServletServer.java:214)
at com.caucho.server.http.ResinServer.init(ResinServer.java:279)
at com.caucho.server.http.ResinServer.main(ResinServer.java:852)
at com.caucho.server.http.HttpServer.main(HttpServer.java:93)
----------------------------------------
========= ERROR 2 ===========
java.lang.NoClassDefFoundError: de/fub/bytecode/generic/InstructionConstants
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at org.apache.xalan.xsltc.compiler.XSLTC.<init>(XSLTC.java:138)
at
org.apache.xalan.xsltc.runtime.TransletTemplates.newTransformer(TransletTemp
lates.java:92)
at com.koberg.makecontent.MCTransformer.doTransform(MCTransformer.java:29)
at com.koberg.makecontent.MasterLogin.doPost(MasterLogin.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at
com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:8
2)
at com.caucho.server.http.Invocation.service(Invocation.java:272)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at
com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)