Hi,
See if having a pair of the sequence of <Resource>
<ResourceParams> instead of having Resource, Resource
ResourceParams, ResourceParams. Also the
<ResourceLink> seems to be misplaced, not that it will
much difference for your set-up.
aka_sergio
--- Carl <[EMAIL PROTECTED]> wrote:
> For various reasons, I need to put a Hashtable as a
> resource in the Tomcat
> Context. I have modified the server.xml as follows
> (note the resource entry
> of "DBHashtable"):
>
> <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"/>
>
> <!-- Global JNDI resources -->
> <GlobalNamingResources>
>
> <!-- Test entry for demonstration purposes -->
> <Environment name="simpleValue"
> type="java.lang.Integer" value="30"/>
>
> <!-- Editable user database that can also be used by
> UserDatabaseRealm to authenticate users -->
> <Resource name="UserDatabase" auth="Container"
> type="org.apache.catalina.UserDatabase"
> description="User database that can be updated and
> saved">
> </Resource>
> <Resource name="DBHashtable" auth="Container"
> type="java.util.Hashtable"/>
> <ResourceParams name="UserDatabase">
> <parameter>
> <name>factory</name>
>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
> </parameter>
> <parameter>
> <name>pathname</name>
> <value>conf/tomcat-users.xml</value>
> </parameter>
> </ResourceParams>
> <ResourceParams name="DBHashtable">
> <parameter>
> <name>factory</name>
> <value>com.tsr.factory.HashtableFactory</value>
> </parameter>
> </ResourceParams>
>
> </GlobalNamingResources>
>
> <ResourceLink name="linkToGlobal"
> global="simpleValue"
> type="java.lang.Integer"/>
>
> <!-- Define the Tomcat Stand-Alone Service -->
> <Service name="Catalina">
>
> <!-- Define a non-SSL Coyote HTTP/1.1 Connector on
> the port specified
> during installation -->
> <Connector
> port="8080" maxThreads="150" minSpareThreads="25"
> maxSpareThreads="75"
> enableLookups="false" redirectPort="8443"
> acceptCount="100"
> debug="0" connectionTimeout="20000"
> disableUploadTimeout="true" />
> <Connector port="8009"
> enableLookups="false" redirectPort="8443" debug="0"
> protocol="AJP/1.3" />
> <!-- Define the top level container in our container
> hierarchy -->
> <Engine name="Catalina" defaultHost="localhost"
> debug="0">
>
> <!-- Global logger unless overridden at lower levels
> -->
> <Logger
> className="org.apache.catalina.logger.FileLogger"
> prefix="catalina_log." suffix=".txt"
> timestamp="true"/>
>
> <Realm
>
className="org.apache.catalina.realm.UserDatabaseRealm"
> debug="0" resourceName="UserDatabase"/>
>
> <Host name="localhost" debug="0" appBase="webapps"
> unpackWARs="true" autoDeploy="true"
> xmlValidation="false" xmlNamespaceAware="false">
>
> <Logger
> className="org.apache.catalina.logger.FileLogger"
> directory="logs" prefix="localhost_log."
> suffix=".txt"
> timestamp="true"/>
>
> </Host>
>
> </Engine>
>
> </Service>
>
> </Server>
>
>
> My application accesses this resource (well, tries
> to) using the following
> code:
>
> try {
> Context ctx = new InitialContext();
> if(ctx == null ){
> System.out.println("Boom - No Context");
> throw new NamingException("No Context - No DataBase
> Exists");
> }
>
> Context envCtx =
> (Context)ctx.lookup("java:comp/env");
> Object ud = (Object)envCtx.lookup("DBHashtable");
> }catch (NamingException ne){
> ne.printStackTrace();
> // throw new SQLException("Datasource Not Found");
> }
>
> It fails of the line "Object ud =
> (Object)envCtx.lookup("DBHashtable");"
> with the following error:
>
> javax.naming.NamingException: Cannot create resource
> instance
> at
>
org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFa
> ctory.java:99)
> at
>
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
> at
>
org.apache.naming.NamingContext.lookup(NamingContext.java:791)
> at
>
org.apache.naming.NamingContext.lookup(NamingContext.java:151)
> at LoginServlet.doPost(LoginServlet.java:37)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:237)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:157)
> at
>
com.tsr.filters.RequestFilter.doFilter(RequestFilter.java:78)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:186)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:157)
> at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:214)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
> t.java:104)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
> Valve.java:198)
> at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:152)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
> t.java:104)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137
> )
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
> t.java:104)
> at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117
> )
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
> t.java:102)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :109)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContex
> t.java:104)
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>
=== message truncated ===
__________________________________
Do you Yahoo!?
The all-new My Yahoo! - Get yours free!
http://my.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]