You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Tim de Boer <ti...@iinet.net.au> on 2004/06/07 05:32:58 UTC

Problems with InitialContext and threads

Hi All

I have a problem with my Tomcat 4.1.24 installation which I'm hoping someone may have an answer for. I have a little quartz scheduler running in Tomcat which I start with a servlet (previously started with a listener but switched to servlet in the hope it might fix things - both ways produced the same error).

When I start Tomcat up in my development mode which has the configuration shown below all works fine. When I start up in production mode however there seems to be problems with *some* Quartz scheduler threads picking up the initialContext???

I have a little utility for printing out the name tree and the output varies between quartz threads??

Here is an example of the output
==============================================================================================

DEBUG[DefaultQuartzScheduler_Worker-4] HibernateUtils:79 - Beginning transaction
ERROR[DefaultQuartzScheduler_Worker-2] TomcatUtils:46 - javax.naming.NameNotFoundException: Name java: is not bound in this Context
DEBUG[DefaultQuartzScheduler_Worker-6] TomcatUtils:42 - >>>>>>>>>>>>>>>>>>>>>>>> PRINTING NAME TREE

>>>>>>>>>>>>>>>>>>>>>>>> FINISHED PRINTING NAME TREE
DEBUG[DefaultQuartzScheduler_Worker-7] HibernateUtils:79 - Beginning transaction
DEBUG[DefaultQuartzScheduler_Worker-2] HibernateUtils:79 - Beginning transaction
DEBUG[DefaultQuartzScheduler_Worker-8] HibernateUtils:79 - Beginning transaction
DEBUG[DefaultQuartzScheduler_Worker-5] HibernateUtils:79 - Beginning transaction
ERROR[DefaultQuartzScheduler_Worker-9] TomcatUtils:40 - javax.naming.NameNotFoundException: Name java: is not bound in this Context
DEBUG[DefaultQuartzScheduler_Worker-9] HibernateUtils:79 - Beginning transaction
Sending Mail!
Sending Mail!
Sending Mail!
Sending Mail!
DEBUG[DefaultQuartzScheduler_Worker-1] TomcatUtils:48 - >>>>>>>>>>>>>>>>>>>>>>>> PRINTING NAME TREE

>>>>>>>>>>>>>>>>>>>>>>>> FINISHED PRINTING NAME TREE
DEBUG[DefaultQuartzScheduler_Worker-6] HibernateUtils:79 - Beginning transaction
Sending Mail!
DEBUG[DefaultQuartzScheduler_Worker-0] TomcatUtils:42 - >>>>>>>>>>>>>>>>>>>>>>>> PRINTING NAME TREE

>>>>>>>>>>>>>>>>>>>>>>>> FINISHED PRINTING NAME TREE
Sending Mail!
Sending Mail!
DEBUG[DefaultQuartzScheduler_Worker-2] TomcatUtils:42 - >>>>>>>>>>>>>>>>>>>>>>>> PRINTING NAME TREE
-comp
--UserTransaction
Couldn't traverse any part of name java:/comp/\UserTransaction: Name is not bound to a Context
--env
---jdbc
----ln
Couldn't traverse any part of name java:/comp//env//jdbc/\ln: Name is not bound to a Context
--Resources
---WEB-INF
----classes
(..and so on)


Here is my production config...
==============================================================================================

<Server port="8005" shutdown="SHUTDOWN" debug="0">
<!--  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>-->

  <Service name="Tomcat-Standalone">

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="80" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="20000"
               useURIValidationHack="false" disableUploadTimeout="true" />

    <Engine name="Standalone" defaultHost="localhost" debug="0">
        <Host name="localhost" debug="0" unpackWARs="false">
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="..\logs"  prefix="tomcat_" suffix=".log"
            timestamp="true"/>
        <Context 
                path="/ln" 
                docBase="LuckyNumbers" 
                debug="10"
        >
        <Resource name="jdbc/ln" scope="Shareable" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/ln">
            <parameter>
                <name>factory</name>
                <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </parameter>
            <!-- DBCP database connection settings -->
            <parameter>
                <name>url</name>
                <value>jdbc:hsqldb:hsql://localhost</value>
            </parameter>
            <parameter>
                <name>driverClassName</name>
                <value>org.hsqldb.jdbcDriver</value>
            </parameter>
            <parameter>
                <name>username</name>
                <value>sa</value>
            </parameter>
            <parameter>
                <name>password</name>
                <value></value>
            </parameter>
            <!-- DBCP connection pooling options -->
            <parameter>
                <name>maxWait</name>
                <value>3000</value>
            </parameter>
            <parameter>
                <name>maxIdle</name>
                <value>100</value>
            </parameter>
            <parameter>
                <name>maxActive</name>
                <value>10</value>
            </parameter>
        </ResourceParams>            
           </Context>
        </Host>

    </Engine>
  </Service>
</Server>

Here is my development config...
==============================================================================================
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<!--  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>-->

  <Service name="Tomcat-Standalone">

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="80" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="20000"
               useURIValidationHack="false" disableUploadTimeout="true" />

    <Engine name="Standalone" defaultHost="localhost" debug="0">
        <Alias>Tim</Alias>
        <Host name="localhost" debug="0" unpackWARs="true" autoDeploy="true" >
            <Logger 
                className="org.apache.catalina.logger.SystemOutLogger" 
                timestamp="false"
            />
            <Context 
                path="/ln" 
                docBase="*project.dir*web" 
                reloadable="true" 
                debug="10"
            >
        <Resource name="jdbc/ln" scope="Shareable" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/ln">
            <parameter>
                <name>factory</name>
                <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
            </parameter>
            <!-- DBCP database connection settings -->
            <parameter>
                <name>url</name>
                <value>jdbc:hsqldb:hsql://localhost</value>
            </parameter>
            <parameter>
                <name>driverClassName</name>
                <value>org.hsqldb.jdbcDriver</value>
            </parameter>
            <parameter>
                <name>username</name>
                <value>sa</value>
            </parameter>
            <parameter>
                <name>password</name>
                <value></value>
            </parameter>
            <!-- DBCP connection pooling options -->
            <parameter>
                <name>maxWait</name>
                <value>3000</value>
            </parameter>
            <parameter>
                <name>maxIdle</name>
                <value>100</value>
            </parameter>
            <parameter>
                <name>maxActive</name>
                <value>10</value>
            </parameter>
        </ResourceParams>            
           </Context>
        </Host>

    </Engine>
    
    
    
  </Service>
</Server>