Derby
  1. Derby
  2. DERBY-2367

Derby fails to connect to a formerly properly created DB on NetWare

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 10.2.2.0
    • Fix Version/s: None
    • Component/s: JDBC
    • Labels:
      None
    • Environment:
      Novell NetWare 6.0 Novell NetWare 6.5
    • Urgency:
      Urgent

      Description

      We try to use Derby inside a Tomcat WebAPP on NetWare which seemed to work pretty good at first.
      But as soon as we restart the server, Derby failed to connect to the DB:

      This is the contents of the derby log file:

      Apache Derby Network Server - 10.2.2.0 - (485682) started and ready to accept connections on port 1527 at 2007-02-21 23:28:43.687 GMT
      ----------------------------------------------------------------
      2007-02-21 23:29:32.577 GMT:
      Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.2.0 - (485682): instance c013800d-0110-e6a2-a26e-000000319ee0
      on database directory SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB

      Database Class Loader started - derby.database.classpath=''

      2007-02-21 23:38:38.927 GMT:
      Shutting down instance c013800d-0110-e6a2-a26e-000000319ee0
      ----------------------------------------------------------------

      Here is the exception we get:

      org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, SQLERRMC: Failed to start database '\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB', see the next exception for details.::SQLSTATE: XJ001Java exception: ': java.lang.NullPointerException'.
      at org.apache.derby.client.am.Connection.completeSqlca(Unknown Source)
      at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(Unknown Source)
      at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(Unknown Source)
      at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(Unknown Source)
      at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(Unknown Source)
      at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(Unknown Source)
      at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(Unknown Source)
      at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(Unknown Source)
      at org.apache.derby.client.net.NetConnection.flowConnect(Unknown Source)
      at org.apache.derby.client.net.NetConnection.(Unknown Source)
      at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(Unknown Source)
      at org.apache.derby.jdbc.ClientDriver.connect(Unknown Source)
      at java.sql.DriverManager.getConnection(DriverManager.java:512)
      at java.sql.DriverManager.getConnection(DriverManager.java:171)
      at com.maintainet.cfg.ASConfig.getEbdCon(ASConfig.java:88)
      at org.apache.jsp.db_jsp._jspService(db_jsp.java:52)
      at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
      at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
      at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
      at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
      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:256)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      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:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
      at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
      at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      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:643)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
      at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:534)

      Some background info:

      We use the network server variant of Derby.
      The first ( creating ) connect is always successful.
      The folders log and seg0 are created and populated successfully.
      We can create tables and data without a problem.
      We checked that by copying the folder to windows and connecting
      and seeing our data being there.
      But all other ( i.e. a second ) connection attempts to an existing DB foilder fail
      with forementioned exception.

      1. derby2.txt
        10 kB
        Raymond H

        Activity

        Hide
        Kristian Waagan added a comment -

        Just a few initial questions:
        1) I'm not familiar with the Novell NetWare. Which JVM is used?

        2) Have you tried creating and reconnecting to the database in embedded mode with ij? What about using the client driver and ij?

        3) Anything in derby.log on the server?

        If I understand you correctly, you are able to move/copy the database to another machine/os and connect there.

        Thanks,

        Show
        Kristian Waagan added a comment - Just a few initial questions: 1) I'm not familiar with the Novell NetWare. Which JVM is used? 2) Have you tried creating and reconnecting to the database in embedded mode with ij? What about using the client driver and ij? 3) Anything in derby.log on the server? If I understand you correctly, you are able to move/copy the database to another machine/os and connect there. Thanks,
        Hide
        Raymond H added a comment -

        Hi Kristian,

        thanks for response !

        1.) It is JVM 1.4.2

        2.) the embedded mode with ij doesn't work because NetWare doesn't like things grabbing the screeninput.
        But we used the network server verion and connected to a not yet existing DB with the jdbc-url...;create=true option.
        And Derby started just fine and we could create tables and query the tables...
        But as soon as we want Derby to start with an existing DB, that error comes along.

        3.) I posted the contents of the derby.log file, is it the wrong one ?

        Basicly the major difference to other OS is that NerWare uses volume names like:
        SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB

        That gave us the first problem when specifing the path to the DB on the JDBC URL.
        We could resolve that by using a relative path like:

        \tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB

        As you can see, there is the complete path name in the derby.log file still...
        So I think the issue could be that uncommen path root. ( i.e. SYS:\ )

        Any Idea if Derby could choke on that ?

        Is there a more verbose log mode for Derby ?

        Show
        Raymond H added a comment - Hi Kristian, thanks for response ! 1.) It is JVM 1.4.2 2.) the embedded mode with ij doesn't work because NetWare doesn't like things grabbing the screeninput. But we used the network server verion and connected to a not yet existing DB with the jdbc-url...;create=true option. And Derby started just fine and we could create tables and query the tables... But as soon as we want Derby to start with an existing DB, that error comes along. 3.) I posted the contents of the derby.log file, is it the wrong one ? Basicly the major difference to other OS is that NerWare uses volume names like: SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB That gave us the first problem when specifing the path to the DB on the JDBC URL. We could resolve that by using a relative path like: \tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB As you can see, there is the complete path name in the derby.log file still... So I think the issue could be that uncommen path root. ( i.e. SYS:\ ) Any Idea if Derby could choke on that ? Is there a more verbose log mode for Derby ?
        Hide
        Mamta A. Satoor added a comment -

        Raymond, I am not familiar with Novell NetWare but have you tried giving absolute path to the database when you try to access it? More information about it can be found at http://db.apache.org/derby/docs/10.2/devguide/cdevdvlp846402.html
        This probably will rule out the path related issue.

        Show
        Mamta A. Satoor added a comment - Raymond, I am not familiar with Novell NetWare but have you tried giving absolute path to the database when you try to access it? More information about it can be found at http://db.apache.org/derby/docs/10.2/devguide/cdevdvlp846402.html This probably will rule out the path related issue.
        Hide
        mike bell added a comment -

        I'm not sure Raymond has explained everything clearly so here's a go.

        We have an webapp that uses Derby. The latest general release 10.2.something from Dec was used.
        We use JDK 1.42 on all the platforms. Tomcat version varies from 4.1 to 5.5.

        Derby is started in a servlet initializer of our app as a Network Server, and we connect to it as a Network Client. It is similarly politely shutdown.

        Anyway, all has been well on Windows (xp, 2000,2003) and Linux (SLES9).

        We then had to test on NetWare. Netware provides a JVM (1.42_06 on the SP I tested,), and Tomcat 4.1 (Tomcat 5.0 is also available, but I didn't test this).

        We deployed the app, and started TomCat up. We ran our app. It created the database flawlessly. It performed a decent number of inserts and selects, etc.

        We then unloaded the app, and then reloaded the app. At this point, Derby throws an exception (listed above) when we try to connect..

        If I copy the DB to Windows and connect (either client/server or embedded) all is fine.

        Show
        mike bell added a comment - I'm not sure Raymond has explained everything clearly so here's a go. We have an webapp that uses Derby. The latest general release 10.2.something from Dec was used. We use JDK 1.42 on all the platforms. Tomcat version varies from 4.1 to 5.5. Derby is started in a servlet initializer of our app as a Network Server, and we connect to it as a Network Client. It is similarly politely shutdown. Anyway, all has been well on Windows (xp, 2000,2003) and Linux (SLES9). We then had to test on NetWare. Netware provides a JVM (1.42_06 on the SP I tested,), and Tomcat 4.1 (Tomcat 5.0 is also available, but I didn't test this). We deployed the app, and started TomCat up. We ran our app. It created the database flawlessly. It performed a decent number of inserts and selects, etc. We then unloaded the app, and then reloaded the app. At this point, Derby throws an exception (listed above) when we try to connect.. If I copy the DB to Windows and connect (either client/server or embedded) all is fine.
        Hide
        Bryan Pendleton added a comment -

        Perhaps there will be more information in one of the chained exceptions. Can you
        modify your application to dump the entire exception chain? Dan explained how here:
        http://www.nabble.com/Failed-to-start-database-tf3122509.html#a8652256

        Show
        Bryan Pendleton added a comment - Perhaps there will be more information in one of the chained exceptions. Can you modify your application to dump the entire exception chain? Dan explained how here: http://www.nabble.com/Failed-to-start-database-tf3122509.html#a8652256
        Hide
        Kristian Waagan added a comment -

        It could also be helpful if you had the possibility to download and use the Derby debug version, so we get line numbers in the stack trace.
        (http://db.apache.org/derby/derby_downloads.html)

        Show
        Kristian Waagan added a comment - It could also be helpful if you had the possibility to download and use the Derby debug version, so we get line numbers in the stack trace. ( http://db.apache.org/derby/derby_downloads.html )
        Hide
        Raymond H added a comment -

        Very good thoughts, thanks both of you.

        Here goes, and yes, it probably is something with NetWare Pathnames...

        DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.Ujava.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U
        at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:46)
        at org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:345)
        at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:149)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at com.maintainet.cfg.ASConfig.getEbdCon(ASConfig.java:88)
        at org.apache.jsp.db_jsp._jspService(db_jsp.java:54)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        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:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        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:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        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:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)
        Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U
        at org.apache.derby.client.am.Connection.completeSqlca(Connection.java:1931)
        at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(NetConnectionReply.java:549)
        at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(NetConnectionReply.java:442)
        at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(NetConnectionReply.java:306)
        at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(NetConnectionReply.java:133)
        at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(NetConnection.java:887)
        at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(NetConnection.java:799)
        at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:620)
        at org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:435)
        at org.apache.derby.client.net.NetConnection.(NetConnection.java:217)
        at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:201)
        at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:140)
        ... 39 more
        getCause:
        DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U
        org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U
        at org.apache.derby.client.am.Connection.completeSqlca(Connection.java:1931)
        at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(NetConnectionReply.java:549)
        at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(NetConnectionReply.java:442)
        at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(NetConnectionReply.java:306)
        at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(NetConnectionReply.java:133)
        at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(NetConnection.java:887)
        at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(NetConnection.java:799)
        at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:620)
        at org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:435)
        at org.apache.derby.client.net.NetConnection.(NetConnection.java:217)
        at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:201)
        at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:140)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at com.maintainet.cfg.ASConfig.getEbdCon(ASConfig.java:88)
        at org.apache.jsp.db_jsp._jspService(db_jsp.java:54)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        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:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        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:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        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:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

        Show
        Raymond H added a comment - Very good thoughts, thanks both of you. Here goes, and yes, it probably is something with NetWare Pathnames... DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.Ujava.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:46) at org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:345) at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:149) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at com.maintainet.cfg.ASConfig.getEbdCon(ASConfig.java:88) at org.apache.jsp.db_jsp._jspService(db_jsp.java:54) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) 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:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 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:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 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:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) Caused by: org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U at org.apache.derby.client.am.Connection.completeSqlca(Connection.java:1931) at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(NetConnectionReply.java:549) at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(NetConnectionReply.java:442) at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(NetConnectionReply.java:306) at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(NetConnectionReply.java:133) at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(NetConnection.java:887) at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(NetConnection.java:799) at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:620) at org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:435) at org.apache.derby.client.net.NetConnection.(NetConnection.java:217) at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:201) at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:140) ... 39 more getCause: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U org.apache.derby.client.am.SqlException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ001, SQLERRMC: org.apache.derby.shared.common.sanity.AssertFailureASSERT FAILED serviceName (SYS:\tomcat\4\webapps\RetainServer\WEB-INF\ebdb\RetainDB) expected to equal getCanonicalServiceName(serviceName) (null)XJ001.U at org.apache.derby.client.am.Connection.completeSqlca(Connection.java:1931) at org.apache.derby.client.net.NetConnectionReply.parseRdbAccessFailed(NetConnectionReply.java:549) at org.apache.derby.client.net.NetConnectionReply.parseAccessRdbError(NetConnectionReply.java:442) at org.apache.derby.client.net.NetConnectionReply.parseACCRDBreply(NetConnectionReply.java:306) at org.apache.derby.client.net.NetConnectionReply.readAccessDatabase(NetConnectionReply.java:133) at org.apache.derby.client.net.NetConnection.readSecurityCheckAndAccessRdb(NetConnection.java:887) at org.apache.derby.client.net.NetConnection.flowSecurityCheckAndAccessRdb(NetConnection.java:799) at org.apache.derby.client.net.NetConnection.flowUSRIDPWDconnect(NetConnection.java:620) at org.apache.derby.client.net.NetConnection.flowConnect(NetConnection.java:435) at org.apache.derby.client.net.NetConnection.(NetConnection.java:217) at org.apache.derby.client.net.ClientJDBCObjectFactoryImpl.newNetConnection(ClientJDBCObjectFactoryImpl.java:201) at org.apache.derby.jdbc.ClientDriver.connect(ClientDriver.java:140) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at com.maintainet.cfg.ASConfig.getEbdCon(ASConfig.java:88) at org.apache.jsp.db_jsp._jspService(db_jsp.java:54) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) 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:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 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:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) 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:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534)
        Hide
        Raymond H added a comment -

        Thanks guys, for giving me the jumstart:

        changing:

        public String getCanonicalServiceName(String name)
        throws StandardException
        {
        String protocolLeadIn = getType() + ":";
        int colon = name.indexOf( ':');
        if( colon > 1) // Subsubprotocols must be at least 2 characters long

        to:

        public String getCanonicalServiceName(String name)
        throws StandardException
        {
        String protocolLeadIn = getType() + ":";
        int colon = name.indexOf( ':');
        if( colon > 128) // Subsubprotocols must be at least 2 characters long

        in org.apache.derby.impl.services.monitor.StorageFactoryService fixes the problem.

        Of course this is only a fix in our case,
        and might not make people happy which use subsubprotocols...

        Show
        Raymond H added a comment - Thanks guys, for giving me the jumstart: changing: public String getCanonicalServiceName(String name) throws StandardException { String protocolLeadIn = getType() + ":"; int colon = name.indexOf( ':'); if( colon > 1) // Subsubprotocols must be at least 2 characters long to: public String getCanonicalServiceName(String name) throws StandardException { String protocolLeadIn = getType() + ":"; int colon = name.indexOf( ':'); if( colon > 128) // Subsubprotocols must be at least 2 characters long in org.apache.derby.impl.services.monitor.StorageFactoryService fixes the problem. Of course this is only a fix in our case, and might not make people happy which use subsubprotocols...
        Hide
        Raymond H added a comment -

        shall I resolve the issue ?

        Show
        Raymond H added a comment - shall I resolve the issue ?
        Hide
        Bryan Pendleton added a comment -

        Thanks for tracking this code down, Raymond, and I'm glad to hear that you've had success with modifying it. I don't think we should mark the issue resolved yet. Perhaps somebody who's familiar with that code can shed some light on what it's doing and whether we can make it more general.

        Show
        Bryan Pendleton added a comment - Thanks for tracking this code down, Raymond, and I'm glad to hear that you've had success with modifying it. I don't think we should mark the issue resolved yet. Perhaps somebody who's familiar with that code can shed some light on what it's doing and whether we can make it more general.
        Hide
        Daniel John Debrunner added a comment -

        I think if you used the sub-sub protocl 'directory' in your application then you could continue to use the standard versions of derby.

        e.g. (I had changed the back slashes to forward slashes so I might have messed up the path)

        jdbc:derby:directory:SYS:/tomcat/4/webapps/RetainServer/WEB-INF/ebdb/RetainDB

        See
        http://db.apache.org/derby/docs/dev/devguide/cdevdvlp40350.html

        "If the path to the database is ambiguous, i.e., potentially the same as that to a database that is available on the classpath (see "Special Database Access"), use the directory: subsubprotocol to specify the one in the file system. For example:

        jdbc:derby:directory:myDB"

        Show
        Daniel John Debrunner added a comment - I think if you used the sub-sub protocl 'directory' in your application then you could continue to use the standard versions of derby. e.g. (I had changed the back slashes to forward slashes so I might have messed up the path) jdbc:derby:directory:SYS:/tomcat/4/webapps/RetainServer/WEB-INF/ebdb/RetainDB See http://db.apache.org/derby/docs/dev/devguide/cdevdvlp40350.html "If the path to the database is ambiguous, i.e., potentially the same as that to a database that is available on the classpath (see "Special Database Access"), use the directory: subsubprotocol to specify the one in the file system. For example: jdbc:derby:directory:myDB"
        Hide
        Raymond H added a comment -

        Ok, so I replaced my patched derby.jar with the original debug version and tried that directory subprotocol.
        It seemed to work at first again, but after restarting tomcat, we got the same error...

        Ill atach the exception as a file this time...

        So we will go back to our patched derby.jar for now...

        BTW: It probably is important to know, that we use the Client/Server version of the connection:

        Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/directory:SYS:/Retain/ebdb/RetainDB;create=true", "admin", "indifferent");

        What are we doing wrong ?

        Show
        Raymond H added a comment - Ok, so I replaced my patched derby.jar with the original debug version and tried that directory subprotocol. It seemed to work at first again, but after restarting tomcat, we got the same error... Ill atach the exception as a file this time... So we will go back to our patched derby.jar for now... BTW: It probably is important to know, that we use the Client/Server version of the connection: Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/directory:SYS:/Retain/ebdb/RetainDB;create=true", "admin", "indifferent"); What are we doing wrong ?
        Hide
        Raymond H added a comment -

        the problem even with directory subsubprotocol...

        Show
        Raymond H added a comment - the problem even with directory subsubprotocol...
        Hide
        mike bell added a comment -

        In the end, we removed the patch, and resolved it differently

        Since we are using the client/server, we set the derby.system.home to the base db path
        and then connected with a jdbc url without path info

        This neatly sidesteps the flawed JDBC URL parsing

        (I call it flawed but to be fair it's simply problematic because NetWare is weird: SERVER\VOLUME:path is a legal pathname there)

        Show
        mike bell added a comment - In the end, we removed the patch, and resolved it differently Since we are using the client/server, we set the derby.system.home to the base db path and then connected with a jdbc url without path info This neatly sidesteps the flawed JDBC URL parsing (I call it flawed but to be fair it's simply problematic because NetWare is weird: SERVER\VOLUME:path is a legal pathname there)
        Hide
        Rick Hillegas added a comment -

        Closing this issue for the following reasons:

        1) There is a workaround.

        2) There has been no activity on this issue for years.

        Show
        Rick Hillegas added a comment - Closing this issue for the following reasons: 1) There is a workaround. 2) There has been no activity on this issue for years.
        Hide
        Raymond H added a comment -

        Dear Sender,

        I am currently on Vacation
        and I wont be able to respond to your email until next week.

        In urgent cases please contact Mr. Camillo Jaeger
        at cjaeger@maintainet.de
        or +49 6051 8326 43

        Show
        Raymond H added a comment - Dear Sender, I am currently on Vacation and I wont be able to respond to your email until next week. In urgent cases please contact Mr. Camillo Jaeger at cjaeger@maintainet.de or +49 6051 8326 43

          People

          • Assignee:
            Unassigned
            Reporter:
            Raymond H
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development