Jim,

I took a look at your code and all seems fine. I am using basically the same method
except I am caching transformers for speed and have not had a problem. Is this on
Windows or Unix ?. I have heard of problems using the ODBC bridge code under
Windows but have not been able to replicate it. Also have you tried to use a stylesheet
that does not use any of the SQL code in your environment ??  I need to get something out
the door this week, but should be able to dive in and take a look by the end of the week.

Regards
JohnG

PS, can you try the same code using the InstantDB as an example. I will use InstantDB
as the test platform.
 

Jim Bugwadia wrote:

Hello,

I've been trying to use Xalan's SQL extensions from a servlet. I'm
able to run everything successfully only once - immediately after
starting Tomcat, the servlet container.

On any attempt to re-invoke the servlet I get an NullPointerException
exception. This happens either on doing a "refresh" or even after re-
starting the webapp. The exception is reported on the "transform"
method call.

Here is the servlet code:

public class DBBrowse extends HttpServlet
{
    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
    }

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {

        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();

        try
        {
            TransformerFactory tFactory = TransformerFactory.newInstance();

            // Get the XML input document and the stylesheet.
            Source xmlSource = new StreamSource(
                new
URL("http://localhost:8080/dbbrowse/servlets/test.xml").openStream());

            Source xslSource = new StreamSource(
                new
URL("http://localhost:8080/dbbrowse/servlets/test.xslt").openStream());

            // Generate the transformer.
            Transformer transformer = tFactory.newTransformer(xslSource);

            // Perform the transformation, sending the output to the
response.
            transformer.transform(xmlSource, new StreamResult(out));
        }
        catch (Exception e)
        {
          out.write(e.getMessage());
          e.printStackTrace(out);
        }

        out.close();
    }
}

And here is the stylesheet:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0"
                xmlns:sql="org.apache.xalan.lib.sql.XConnection"
                extension-element-prefixes="sql">

  <xsl:output method="html" indent="yes"/>
  <xsl:param name="query" select="'SELECT * FROM SYS.TABLES'"/>

  <xsl:template match="/">
    <!-- 1. Make the connection -->
    <xsl:variable name="products"
                  select="sql:new('com.timesten.jdbc.TimesTenDriver',
                                'jdbc:timesten:direct:JetCmeData')"/>
    <HTML>
      <HEAD>
      </HEAD>
      <BODY>
        <TABLE border="1">

        <xsl:variable name="table" select='sql:query($products, $query)'/>

          <TR>
          <!-- Get column-label attribute from each column-header-->
          <xsl:for-each select="$table/sql/metadata/column-header">
            <TH><xsl:value-of select="@column-label"/></TH>
          </xsl:for-each>
          </TR>

          <xsl:apply-templates select="$table/sql/row-set/row"/>
          <xsl:text>&#10;</xsl:text>

        </TABLE>
      </BODY>
    </HTML>
    <!-- 3. Close the connection -->
    <xsl:value-of select="sql:close($products)"/>
  </xsl:template>

  <xsl:template match="row">
        <TR>
          <xsl:apply-templates select="col"/>
        </TR>
  </xsl:template>

  <xsl:template match="col">
    <TD>
      <!-- Here is the column data -->
      <xsl:value-of select="text()"/>
    </TD>
  </xsl:template>

</xsl:stylesheet>

Any ideas on what could be the problem?

Btw, I can sucessfully invoke this styleheet multiple times from the
command line.

Thanks,

Jim

PS: Here is the exception stack:

java.lang.NullPointerExceptionjavax.xml.transform.TransformerException:
java.lang.NullPointerException at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
ava:1226) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
638) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1088) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1066) at DBBrowse.doGet(DBBrowse.java:45) 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(Application
FilterChain.java:247) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011) at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
) at java.lang.Thread.run(Unknown Source) ---------
java.lang.NullPointerException at
org.apache.xpath.axes.FilterExprWalker.getAxis(FilterExprWalker.java:301) at
org.apache.xpath.axes.WalkingIteratorSorted.canBeWalkedInNaturalDocOrder(Wal
kingIteratorSorted.java:128) at
org.apache.xpath.axes.WalkingIteratorSorted.setRoot(WalkingIteratorSorted.ja
va:172) at
org.apache.xpath.axes.LocPathIterator.asIterator(LocPathIterator.java:267)
at
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.ja
va:357) at
org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:287) at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java:2182) at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:
678) at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java:2182) at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:
678) at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java:2182) at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:
678) at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java:2182) at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:
678) at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java:2182) at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
Impl.java:2008) at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
ava:1171) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
638) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1088) at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1066) at DBBrowse.doGet(DBBrowse.java:45) 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(Application
FilterChain.java:247) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163) at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66) at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011) at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
) at java.lang.Thread.run(Unknown Source)


 

Reply via email to