Hi there Group. Not sure if anyone can help me with this here, but worth a shot. I was hoping someone would be able to help me with some code that Ive knocked up to test JDOM being used in a servlet. Quick Synopsis: Servlet gets hold of a stylesheet in its init() method and caches for future reuse.The doGet() method then sets up a database connection, uses the JDOMResultSetBuilder to get an XML representation of the record and uses this as the XMLSource. A transformation is then done on the XMLSource and I want this to be output to the browser for display.Everything compiles OK, I have setup tomcat, webxml, and jar files appropriately and the Servlet runs using http://127.0.0.1:8080/mywebapp/servlet/JDOMServlet.Many thanks for taking the time to read this. Much appreciated. Rgds
JS I'm not sure how right my code is, but it runs with no output. Here's the code...... import javax.servlet.*; import javax.servlet.http.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.jdom.*; import org.jdom.input.*; import org.jdom.output.*; import org.jdom.transform.*; import org.jdom.JDOMException; import org.jdom.contrib.input.ResultSetBuilder; import java.sql.*; import java.io.*; import java.io.IOException; import java.lang.*; public class JDOMServlet extends HttpServlet { private TransformerFactory tFactory = TransformerFactory.newInstance(); private String url = "jdbc:odbc:StudentDB"; private ResultSet rs = null; private StreamSource xsltSource; public void init(ServletConfig config) throws ServletException { super.init(config); ServletContext context = config.getServletContext(); try { //Want to cache the stylesheet for future resuse //then it doesnt have to be loaded constantly xsltSource = new StreamSource(context.getResourceAsStream("/Web-Inf/viewStudentDetails.xsl"));//-------I think this is the problem line, it is LINE 35 ----------// Templates templates = tFactory.newTemplates(xsltSource); } catch (TransformerConfigurationException tce) { tce.printStackTrace(); } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType("text/html"); //setup the database connection and use the ResultSetBuilder to generate //a JDOM XML document of a students details try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection(url,"",""); Statement stmt = conn.createStatement(); System.out.println("Connected to database"); Namespace ns = Namespace.getNamespace("xhtml", "http://w3.org/etc"); rs = stmt.executeQuery("SELECT * FROM tblStudent WHERE StudentID = 9917217"); System.out.println("Executing query:SELECT * FROM tblStudent WHERE StudentID = 9917217"); ResultSetBuilder builder = new ResultSetBuilder(rs); Document doc = builder.build(); XMLOutputter xOutputter = new XMLOutputter(" ", true); xOutputter.output(doc, System.out); //get the JDOM document that was produced by the JDOM ResultSetBuilder //and convert to a normal dom document for use by the transformer processor org.jdom.output.DOMOutputter dOutputter = new org.jdom.output.DOMOutputter(); org.w3c.dom.Document domDocument = dOutputter.output(doc); Source xmlSource = new javax.xml.transform.dom.DOMSource(domDocument); //create the output result for the newly created XSLT document //this will allow me to output the result to the browser StreamResult result = new StreamResult response.getOutputStream()); //get the transformer System.out.println("Preparing to create Transformer"); Transformer transformer = tFactory.newTransformer(xsltSource); //Do the transform transformer.transform(xmlSource, result); } catch (Exception e) { System.out.println(e.getMessage()); } } } Here's what the tomcat logfile had to say...... java.net.MalformedURLException at java.net.URL.<init>(URL.java:613) at java.net.URL.<init>(URL.java:476) at java.net.URL.<init>(URL.java:425) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:740) at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(XMLEntityManager.java:685) at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(XMLDocumentScannerImpl.java:252) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:503) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:585) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1148) at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:983) at JDOMServlet.init(JDOMServlet.java:35) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:919) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:656) at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:401) at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518) at java.lang.Thread.run(Thread.java:536) --------- java.net.MalformedURLException at java.net.URL.<init>(URL.java:613) at java.net.URL.<init>(URL.java:476) at java.net.URL.<init>(URL.java:425) at org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:740) at org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(XMLEntityManager.java:685) at org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(XMLDocumentScannerImpl.java:252) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:503) at org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfiguration.java:585) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147) at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1148) at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:983) at JDOMServlet.init(JDOMServlet.java:35) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:919) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:656) at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:401) at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518) at java.lang.Thread.run(Thread.java:536) Connected to database Executing query:SELECT * FROM tblStudent WHERE StudentID = 9917217 <?xml version="1.0" encoding="UTF-8"?> <result> <entry> <StudentID>9917217</StudentID> <DCSCentralID>1</DCSCentralID> <FirstName>Jason</FirstName> <LastName>Smartt</LastName> <DateOfBirth>10 June 1976 00:00:00 o'clock BST</DateOfBirth> <TermtimeAddress>25 Oakwood Close, Burton, London</TermtimeAddress> <TermtimePostCode>SE5 3LS</TermtimePostCode> <PermanentAddress>15 West Wickham Road, Bromley</PermanentAddress> <PermanentPostCode>BR4 5TT</PermanentPostCode> <PermanentPhoneNumber>02074556789</PermanentPhoneNumber> <MobileTelephone>07987 654664</MobileTelephone> <EmailAddress>[EMAIL PROTECTED]</EmailAddress> <EntryQualifications>AAC</EntryQualifications> <YearOfEntry>1999</YearOfEntry> <YearOfGrad>2003</YearOfGrad> <CurrentStage>3</CurrentStage> <CandidateNumber>E08956</CandidateNumber> <LecturerID>TC01</LecturerID> <UCASCode>G4N2</UCASCode> <Photograph /> </entry> </result> Preparing to create Transformer javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: java.net.MalformedURLExceptionStoppingservice Internal Services --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]