tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Cook <bc...@printtime.com>
Subject Re: jndi question
Date Thu, 25 Aug 2005 13:39:16 GMT
Sean,

One thing that stands out in your message is that the conext.xml file 
was placed in the META-INF folder.  Is it also in <<Tomcat 
Folder>>/conf/Catalina/localhost/ as the module name?  i.e. If the 
context path name of your webapp is "/seansApp" the context.xml file 
should appear in this folder as seansApp.xml.


The context.xml file is stored in META-INF during development but needs 
to be placed in <<Tomcat Folder>>/conf/Catalina/localhost/ folder for 
deployment with the file name of the context path.




Sean Rowe wrote:
> I have tried again using the method described in the url brian gave.  
> Here is the stack exception I'm receiving:
> 
> *type* Exception report
> 
> *message*
> 
> *description* _The server encountered an internal error () that 
> prevented it from fulfilling this request._
> 
> *exception*
> 
> javax.servlet.ServletException: Name java:comp is not bound in this Context
>     org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848) 
> 
>     org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781) 
> 
>     org.apache.jsp.test_jsp._jspService(org.apache.jsp.test_jsp:69)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) 
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 
> *root cause*
> 
> javax.naming.NameNotFoundException: Name java:comp is not bound in this 
> Context
>     org.apache.naming.NamingContext.lookup(NamingContext.java:769)
>     org.apache.naming.NamingContext.lookup(NamingContext.java:152)
>     javax.naming.InitialContext.lookup(InitialContext.java:351)
>     com.transcriptionportal.utils.DBManager.init(DBManager.java:25)
>     org.apache.jsp.test_jsp._jspService(org.apache.jsp.test_jsp:53)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) 
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) 
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 
> 
> I have enclosed my server.xml, web.xml, context.xml (that i placed in my 
> web/META-INF folder), and the class I'm using to make the connection.  
> Thanks again to everyone who has helped me so far.
> 
> sean
> 
> Allistair Crossley wrote:
> 
>> Hi,
>>
>> He isn't using that method of configuration, that's just 1 option of 
>> 3. He is nesting his Context definition within the server.xml Host 
>> element. Although this is now scorned, it's still valid. The 2 other 
>> methods are contextname.xml as you say, and also META-INF/context.xml 
>> within the webapp itself. Allistair.
>>
>>  
>>
>>> -----Original Message-----
>>> From: Brian Cook [mailto:bcook@printtime.com]
>>> Sent: 23 August 2005 17:23
>>> To: Tomcat Users List
>>> Subject: Re: jndi question
>>>
>>>
>>>
>>> Ok but do you have the resource defined in context.xml?  If you go to 
>>> <<Tomcat Dir>>/conf/Cataliana/localhost/ do you see a file with the 
>>> name of the module ending with .xml?  If so is the resource defined 
>>> in that file?  If not you need to add it.
>>>
>>> From the description it sounds like nothing in this set up has been 
>>> done as was show on the example page.
>>>
>>> http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-resources
>>> -howto.html
>>>
>>> If you use the code block that is shown, define that resource in 
>>> web.xml and context.xml it will work.  But multiple postings latter 
>>> it still sounds like the JNDI resource is not defined in context.xml 
>>> and the code calling the JNDI resource differs greatly from the 
>>> example provided.
>>>
>>>
>>> Sean Rowe wrote:
>>>   
>>>
>>>> The first post on this included the server.xml, and further     
>>>
>>> down in the   
>>>
>>>> page is the relevant part of web.xml ( i just double     
>>>
>>> checked that ).  as   
>>>
>>>> for context.xml, i have listed it in my webapp.xml file, as well as 
>>>> server.xml as all other examples have suggested.  i then     
>>>
>>> tried it in the   
>>>
>>>> admin module, where it then put it in server.xml for me.      
>>>
>>> i'm willing to   
>>>
>>>> try anything at this point, though, if you have any suggestions.
>>>>
>>>> as for my post not being jndi specific, i applogize if     
>>>
>>> that's the case.    
>>>
>>>> i'm not really familiar with jndi....but when I did a search for 
>>>> 'connection pooling', jndi seemed to be what everyone     
>>>
>>> suggested i use.    
>>>
>>>> what i want to do, if it's not clear, is to create a     
>>>
>>> connection pool to   
>>>
>>>> my MySql database.
>>>> thanks,
>>>> sean
>>>>
>>>> Brian Cook wrote:
>>>>
>>>>     
>>>>
>>>>> Actually the files I listed are NOT in the first post.  It       
>>>
>>> shows the   
>>>
>>>>> server.xml and the code calling it but does not show web.xml or 
>>>>> context.xml.
>>>>>
>>>>> The error you are getting just means that that the JNDI       
>>>
>>> resource being   
>>>
>>>>> called in the code is not defined in both web.xml and context.xml.
>>>>>
>>>>> In looking at the code snip it in the first post I am not       
>>>
>>> following   
>>>
>>>>> what you are trying to do.  The post is for a JNDI       
>>>
>>> question but in the   
>>>
>>>>> code it looks like you are calling the DB URL directly.  The whole 
>>>>> point of JDNI being to get specific URL, and configuration info 
>>>>> outside of the code base.  I am not following what it is you are 
>>>>> trying to do here.
>>>>>
>>>>>
>>>>>
>>>>> Sean Rowe wrote:
>>>>>
>>>>>       
>>>>>
>>>>>> Brian, thank you for replying.  I was afraid my topic was         
>>>
>>> dead.  If   
>>>
>>>>>> you could look at my first post, I listed all the files         
>>>
>>> that you have   
>>>
>>>>>> suggested I take a look at.  I have done everything you have 
>>>>>> suggested, but am still getting errors.  The error I am         
>>>
>>> getting now is
>>>   
>>>
>>>>>> javax.naming.NameNotFoundException: Name java:comp is not         
>>>
>>> bound in   
>>>
>>>>>> this Context
>>>>>>
>>>>>> I can't find anything on the net or in any books I've         
>>>
>>> looked at that   
>>>
>>>>>> explains this.  As far as I can tell, java:comp should just be 
>>>>>> there.  Any ideas?  Thanks again.
>>>>>>
>>>>>> Sean
>>>>>>
>>>>>> Brian Cook wrote:
>>>>>>
>>>>>>         
>>>>>>
>>>>>>> Yes you can use JNDI with out using JSTL.  But the only way to 
>>>>>>> configure it is to define the JNDI resources in the web.xml and 
>>>>>>> context.xml files.    Technically you should be able to use the 
>>>>>>> globally defined JNDI resources in server.xml, and I have seen 
>>>>>>> configuration set ups doing it when googling.  But could           
>>>
>>> never get   
>>>
>>>>>>> them to work.
>>>>>>>
>>>>>>> This highlights another area of seemingly unneeded           
>>>
>>> complication in   
>>>
>>>>>>> Java/Unix development.  Using JNDI for data sources which was 
>>>>>>> supposed to help you save time requires that you           
>>>
>>> redundantly define   
>>>
>>>>>>> the JNDI resource in at lest 2 if not 3 places.
>>>>>>>
>>>>>>> The admin tool which was also supposed to help save time           
>>>
>>> defines the   
>>>
>>>>>>> JNDI resources in server.xml which does not really seem           
>>>
>>> to be all   
>>>
>>>>>>> that helpful.  I am sure there is likely a reason for           
>>>
>>> this but I am   
>>>
>>>>>>> ignorant of it.  The admin tool is also supposed to let           
>>>
>>> you define   
>>>
>>>>>>> JNDI resources  per context but it errors out when ever           
>>>
>>> I have tried   
>>>
>>>>>>> it.
>>>>>>>
>>>>>>> My experience with the Tomcat Admin and Manager tools is           
>>>
>>> that they   
>>>
>>>>>>> are worthless.  Of the few steps they try to help with           
>>>
>>> more often   
>>>
>>>>>>> that not they just return errors when you need to use           
>>>
>>> it.  I removed   
>>>
>>>>>>> them both and have gone back to doing set ups manually           
>>>
>>> and there has   
>>>
>>>>>>> not been much of a time difference doing it this way.
>>>>>>>
>>>>>>> Any way for JNDI to work you will have to add the           
>>>
>>> definition for it   
>>>
>>>>>>> in both web.xml and context.xml in the <<Tomcat 
>>>>>>> Folder>>/conf/Catalina/localhost/ folder.  This seems counter 
>>>>>>> productive since it makes your app less portable having the data 
>>>>>>> base configuration details inside the context and by           
>>>
>>> extent the WAR   
>>>
>>>>>>> file but it is what you have to do to get it to work right now.
>>>>>>>
>>>>>>> I feel your pain I know it is frustrating spending hours           
>>>
>>> debugging   
>>>
>>>>>>> just the DB connection but todate that is the reality of           
>>>
>>> Java web   
>>>
>>>>>>> app development.  It is why I fear we will all be .Net           
>>>
>>> developers   
>>>
>>>>>>> some day.
>>>>>>>
>>>>>>>
>>>>>>> Example :
>>>>>>>
>>>>>>>           
>>>
>>> http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-resources
>>> -howto.html   
>>>
>>>>>>> <CODE>
>>>>>>>
>>>>>>> Context initCtx = new InitialContext();
>>>>>>> Context envCtx = (Context) initCtx.lookup("java:comp/env");
>>>>>>> DataSource ds = (DataSource)
>>>>>>>  envCtx.lookup("jdbc/EmployeeDB");
>>>>>>>
>>>>>>> Connection conn = ds.getConnection();
>>>>>>> ... use this connection to access the database ...
>>>>>>> conn.close();
>>>>>>>
>>>>>>> </CODE>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> <WEB.XML>
>>>>>>>
>>>>>>> <resource-ref>
>>>>>>>  <description>
>>>>>>>    Resource reference to a factory for java.sql.Connection
>>>>>>>    instances that may be used for talking to a particular
>>>>>>>    database that is configured in the server.xml file.
>>>>>>>  </description>
>>>>>>>  <res-ref-name>
>>>>>>>    jdbc/EmployeeDB
>>>>>>>  </res-ref-name>
>>>>>>>  <res-type>
>>>>>>>    javax.sql.DataSource
>>>>>>>  </res-type>
>>>>>>>  <res-auth>
>>>>>>>    Container
>>>>>>>  </res-auth>
>>>>>>> </resource-ref>
>>>>>>>
>>>>>>> </WEB.XML>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> <CONTEXT FILE>
>>>>>>>
>>>>>>> <Context>
>>>>>>>
>>>>>>>  <Resource     name="jdbc/EmployeeDB"
>>>>>>>        auth="Container"
>>>>>>>                type="javax.sql.DataSource"
>>>>>>>        username="dbusername"
>>>>>>>        password="dbpassword"
>>>>>>>                driverClassName="org.hsql.jdbcDriver"            > 
>>>>>>> >>>> url="jdbc:HypersonicSQL:database"
>>>>>>>        maxActive="8"
>>>>>>>        maxIdle="4"/>
>>>>>>>
>>>>>>> </Context>
>>>>>>>
>>>>>>> </CONTEXT FILE>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Sean Rowe wrote:
>>>>>>>
>>>>>>>           
>>>>>>>
>>>>>>>> Dirk, I'm sorry I didn't see the difference on the page 
>>>>>>>>             
>>>
>>> you sent me   
>>>
>>>>>>>> to.  However, if there is a way I can do this without             
>>>
>>> having to use   
>>>
>>>>>>>> jstl, I would really like to know.  I was hoping to put 
>>>>>>>>             
>>>
>>> the code in   
>>>
>>>>>>>> a class somewhere that my servlets could use.
>>>>>>>>
>>>>>>>> thanks,
>>>>>>>> sean
>>>>>>>>
>>>>>>>> Dirk Weigenand wrote:
>>>>>>>>
>>>>>>>>             
>>>>>>>>
>>>>>>>>> Sean,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>               
>>>>>>>>>
>>>>>>>>>> --- Urspr√ľngliche Nachricht ---
>>>>>>>>>> Von: Sean Rowe <ichabooka@gmail.com>
>>>>>>>>>> An: Tomcat Users List <tomcat-user@jakarta.apache.org>
>>>>>>>>>> Betreff: Re: jndi question
>>>>>>>>>> Datum: Mon, 22 Aug 2005 09:24:10 -0500
>>>>>>>>>>
>>>>>>>>>> Thanks for responding Dirk.  I've practically memorized the 
>>>>>>>>>> documentation on the link you sent:
>>>>>>>>>>
>>>>>>>>>> // Obtain our environment naming context
>>>>>>>>>> Context initCtx = new InitialContext();
>>>>>>>>>> Context envCtx = (Context) initCtx.lookup("java:comp/env");
>>>>>>>>>>
>>>>>>>>>> // Look up our data source
>>>>>>>>>> DataSource ds = (DataSource)
>>>>>>>>>> envCtx.lookup("jdbc/EmployeeDB");
>>>>>>>>>>
>>>>>>>>>> // Allocate and use a connection from the pool
>>>>>>>>>> Connection conn = ds.getConnection();
>>>>>>>>>> ... use this connection to access the database ...
>>>>>>>>>> conn.close();
>>>>>>>>>>
>>>>>>>>>> Whenever I try this, here's what I get (which led me 
>>>>>>>>>>                 
>>>
>>> to trying it   
>>>
>>>>>>>>>> the way
>>>>>>>>>> I posted):
>>>>>>>>>>
>>>>>>>>>> javax.naming.NameNotFoundException: Name java:comp is 
>>>>>>>>>>                 
>>>
>>> not bound   
>>>
>>>>>>>>>> in this
>>>>>>>>>> Context
>>>>>>>>>>
>>>>>>>>>>  
>>>>>>>>>>                 
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> No. Did you look at
>>>>>>>>>
>>>>>>>>>               
>>>
>>> http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasourc
>>> e-examples-howto.html?   
>>>
>>>>>>>>> I recommend putting the context definition in its own 
>>>>>>>>>               
>>>
>>> content.xml. On
>>>   
>>>
>>>>>>>>> redeploying my application tomcat wouldn't find the               
>>>
>>> driver class   
>>>
>>>>>>>>> anymore.
>>>>>>>>>
>>>>>>>>> Mind you not the class itself but the definition of               
>>>
>>> what class to   
>>>
>>>>>>>>> load.
>>>>>>>>>
>>>>>>>>> This problem was solved by putting the context into               
>>>
>>> context.xml.
>>>   
>>>
>>>>>>>>> regards
>>>>>>>>>      Dirk
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>               
>>>>>>>>
>>>>>>>>             
>>>
>>> ---------------------------------------------------------------------
>>>   
>>>
>>>>>>>> To unsubscribe, e-mail:             
>>>
>>> tomcat-user-unsubscribe@jakarta.apache.org
>>>   
>>>
>>>>>>>> For additional commands, e-mail:             
>>>
>>> tomcat-user-help@jakarta.apache.org
>>>   
>>>
>>>>>>>>             
>>>>>>>
>>>>>>>
>>>>>>>           
>>>
>>> --------------------------------------------------------------
>>> ----------   
>>>
>>>>>>>
>>>>>>>           
>>>
>>> ---------------------------------------------------------------------
>>>   
>>>
>>>>>>> To unsubscribe, e-mail:           
>>>
>>> tomcat-user-unsubscribe@jakarta.apache.org
>>>   
>>>
>>>>>>> For additional commands, e-mail:           
>>>
>>> tomcat-user-help@jakarta.apache.org
>>>   
>>>
>>>>>>         
>>>
>>> ---------------------------------------------------------------------
>>>   
>>>
>>>>>> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>>>>> For additional commands, e-mail:         
>>>
>>> tomcat-user-help@jakarta.apache.org
>>>   
>>>
>>>>>>         
>>>>>
>>>>>
>>>>>       
>>>
>>> --------------------------------------------------------------
>>> ----------
>>>   
>>>
>>>>>       
>>>
>>> ---------------------------------------------------------------------
>>>   
>>>
>>>>> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>>>> For additional commands, e-mail:       
>>>
>>> tomcat-user-help@jakarta.apache.org
>>>   
>>>
>>>>     
>>>
>>> ---------------------------------------------------------------------
>>>   
>>>
>>>> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>>> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>>>
>>>>
>>>>     
>>>
>>> -- 
>>> Brian Cook
>>> Digital Services Analyst
>>> Print Time Inc.
>>> bcook@printtime.com
>>> 913.345.8900
>>>
>>>
>>>   
>>
>>
>>
>> <FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE> 
>> -------------------------------------------------------
>> QAS Ltd.
>> Registered in England: No 2582055
>> Registered in Australia: No 082 851 474
>> -------------------------------------------------------
>> </FONT>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>>  
>>
> 
> ------------------------------------------------------------------------
> 
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
> <web-app>
>    <display-name>dbname</display-name>  
>    
>    <resource-ref>
>       <description>DB Connection</description>
>       <res-ref-name>jdbc/dbname</res-ref-name>
>       <res-type>javax.sql.DataSource</res-type>
>       <res-auth>Container</res-auth>
>   </resource-ref>
> 
>    <context-param>
>       <param-name>dbdriver</param-name>
>       <param-value>com.mysql.jdbc.Driver</param-value>
>    </context-param>
>    <context-param>
>       <param-name>dburl</param-name>
>       <param-value>jdbc:mysql://localhost:3306/dbname</param-value>
>    </context-param>
>    <context-param>
>       <param-name>dbuser</param-name>
>       <param-value>transroot</param-value>
>    </context-param>
>    <context-param>
>       <param-name>dbpw</param-name>
>       <param-value>password</param-value>
>    </context-param>
>    
>    <listener>
>       <listener-class>com.dbname.utils.ContextListener</listener-class>
>    </listener>
> 
> <!--
>    <filter>
> 		<filter-name>TransFilter</filter-name>
> 		<filter-class>com.dbname.utils.TransFilterFilter</filter-class>
> 	</filter>
>    <filter-mapping>
>       <filter-name>TransFilter</filter-name>
>       <url-pattern>/pages/*</url-pattern>
>    </filter-mapping>
>    <filter-mapping>
>       <filter-name>TransFilterFilter</filter-name>
>       <url-pattern>/WEB-INF/*</url-pattern>
>    </filter-mapping> -->
>    
>    <servlet>
>       <servlet-name>Login</servlet-name>
>       <servlet-class>com.dbname.servlets.LoginServlet</servlet-class>
>    </servlet>
>    <servlet-mapping>
>       <servlet-name>Login</servlet-name>
>       <url-pattern>/Login</url-pattern>
>    </servlet-mapping>
> 
>    <servlet>
>       <servlet-name>Signup</servlet-name>
>       <servlet-class>com.dbname.servlets.SignupServlet</servlet-class>
>    </servlet>
>    <servlet-mapping>
>       <servlet-name>Signup</servlet-name>
>       <url-pattern>/Signup</url-pattern>
>    </servlet-mapping>
> 
>    <servlet>
>       <servlet-name>RecoverPassword</servlet-name>
>       <servlet-class>com.dbname.servlets.RecoverPasswordServlet</servlet-class>
>    </servlet>
>    <servlet-mapping>
>       <servlet-name>RecoverPassword</servlet-name>
>       <url-pattern>/RecoverPassword</url-pattern>
>    </servlet-mapping>
> 
>    <servlet>
>       <servlet-name>UserDetails</servlet-name>
>       <servlet-class>com.dbname.servlets.UserDetailsServlet</servlet-class>
>    </servlet>
>    <servlet-mapping>
>       <servlet-name>UserDetails</servlet-name>
>       <url-pattern>/UserDetails</url-pattern>
>    </servlet-mapping>
>    
>    <welcome-file-list>
>       <welcome-file>index.jsp</welcome-file>
>    </welcome-file-list>
> 
> </web-app>
> 
> 
> ------------------------------------------------------------------------
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <Context>
>     
>   <Resource name="jdbc/dbname"         
>             auth="Container"
>             type="javax.sql.DataSource"
>             username="transroot"
>             password="password"
>             driverClassName="org.hsql.jdbcDriver"    
>             url="jdbc:mysql://localhost:3306/dbname"
>             maxActive="50"
>             maxIdle="30"/>
> </Context>
> 
> 
> ------------------------------------------------------------------------
> 
> package com.dbname.utils;
> 
> import javax.naming.*;
> import javax.sql.*;
> import java.sql.*;
> import java.util.*;
> import org.apache.commons.dbcp.BasicDataSourceFactory;
> import org.apache.commons.collections.*;
> import org.apache.commons.pool.*;
> 
> public class DBManager {
> 
>   String username = "";
>     
>   public void init() throws SQLException, NamingException, Exception{
>     String query = "SELECT * FROM UserDetails";
>     username = "getting the query<br";
> 
>          username += "setting initCtx<br>";
>          //Properties p=new Properties();
>          //p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.commons.dbcp.BasicDataSourceFactory");
>          //p.put(Context.PROVIDER_URL,"jdbc:mysql://localhost:3306");
>          Context initCtx = new InitialContext();
>          username += "setting envCtx<br>";
>          Context envCtx = (Context) initCtx.lookup("java:comp/env");
>          
>          //if(envCtx == null ) {
>             //throw new Exception("Boom - No Environment Context");
>         // }
>          
>          // the following matches the resource name defined in foo.xml
>          username += "setting ds<br>";
>          //DataSource ds = (DataSource) envCtx.lookup("jdbc/dbname");
>          DataSource ds = (DataSource) envCtx.lookup("jdbc/dbname");
>          
>          if (ds != null) {
>             username += "setting conn<br>";
>             Connection conn = ds.getConnection();
>          
>             if(conn != null) {
>             username += "setting stmt<br>";
>                Statement stmt = conn.createStatement ();
>             username += "setting rs<br>";
>                ResultSet rs = stmt.executeQuery (query);
>                if (!rs.next()) {
>                   username = "rs.next was false";
>                } else {
>                   username = rs.getString("username");
>                }
>                rs.close();
>                stmt.close();
>                conn.close();
>             } else {
>                throw new Exception("No Connection");
>             }
>          } else {
>             throw new Exception("No Datasource");
>          }
>    }
>    
>    public String getUsername() { 
>       return username;
>    }
> }
> 
> 
> ------------------------------------------------------------------------
> 
> <!-- Example Server Configuration File -->
> <!-- Note that component elements are nested corresponding to their
>      parent-child relationships with each other -->
> 
> <!-- A "Server" is a singleton element that represents the entire JVM,
>      which may contain one or more "Service" instances.  The Server
>      listens for a shutdown command on the indicated port.
> 
>      Note:  A "Server" is not itself a "Container", so you may not
>      define subcomponents such as "Valves" or "Loggers" at this level.
>  -->
> 
> <Server port="8005" shutdown="SHUTDOWN">
> 
>   <!-- Comment these entries out to disable JMX MBeans support used for the 
>        administration web application -->
>   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
>   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
>   <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
> 
>   <!-- 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"
>            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
>           pathname="conf/tomcat-users.xml" />
> 
>   </GlobalNamingResources>
> 
>   <!-- A "Service" is a collection of one or more "Connectors" that share
>        a single "Container" (and therefore the web applications visible
>        within that Container).  Normally, that Container is an "Engine",
>        but this is not required.
> 
>        Note:  A "Service" is not itself a "Container", so you may not
>        define subcomponents such as "Valves" or "Loggers" at this level.
>    -->
> 
>   <!-- Define the Tomcat Stand-Alone Service -->
>   <Service name="Catalina">
> 
>     <!-- A "Connector" represents an endpoint by which requests are received
>          and responses are returned.  Each Connector passes requests on to the
>          associated "Container" (normally an Engine) for processing.
> 
>          By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
>          You can also enable an SSL HTTP/1.1 Connector on port 8443 by
>          following the instructions below and uncommenting the second Connector
>          entry.  SSL support requires the following steps (see the SSL Config
>          HOWTO in the Tomcat 5 documentation bundle for more detailed
>          instructions):
>          * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
>            later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
>          * Execute:
>              %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
>              $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
>            with a password value of "changeit" for both the certificate and
>            the keystore itself.
> 
>          By default, DNS lookups are enabled when a web application calls
>          request.getRemoteHost().  This can have an adverse impact on
>          performance, so you can disable it by setting the
>          "enableLookups" attribute to "false".  When DNS lookups are disabled,
>          request.getRemoteHost() will return the String version of the
>          IP address of the remote client.
>     -->
> 
>     <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
>     <Connector port="8080" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" redirectPort="8443" acceptCount="100"
>                connectionTimeout="20000" disableUploadTimeout="true" />
>     <!-- Note : To disable connection timeouts, set connectionTimeout value
>      to 0 -->
> 	
> 	<!-- Note : To use gzip compression you could set the following properties :
> 	
> 			   compression="on" 
> 			   compressionMinSize="2048" 
> 			   noCompressionUserAgents="gozilla, traviata" 
> 			   compressableMimeType="text/html,text/xml"
> 	-->
> 
>     <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
>     <Connector port="8443" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" disableUploadTimeout="true"
>                acceptCount="100" scheme="https" secure="true"
>                clientAuth="false" sslProtocol="TLS" />
> 
>     <!-- Define an AJP 1.3 Connector on port 8009 -->
>     <Connector port="8009" 
>                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
> 
>     <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
>     <!-- See proxy documentation for more information about using this. -->
>     <!--
>     <Connector port="8082" 
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" acceptCount="100" connectionTimeout="20000"
>                proxyPort="80" disableUploadTimeout="true" />
>     -->
> 
>     <!-- An Engine represents the entry point (within Catalina) that processes
>          every request.  The Engine implementation for Tomcat stand alone
>          analyzes the HTTP headers included with the request, and passes them
>          on to the appropriate Host (virtual host). -->
> 
>     <!-- You should set jvmRoute to support load-balancing via AJP ie :
>     <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">         
>     --> 
>          
>     <!-- Define the top level container in our container hierarchy -->
>     <Engine name="Catalina" defaultHost="localhost">
> 
>       <!-- The request dumper valve dumps useful debugging information about
>            the request headers and cookies that were received, and the response
>            headers and cookies that were sent, for all requests received by
>            this instance of Tomcat.  If you care only about requests to a
>            particular virtual host, or a particular application, nest this
>            element inside the corresponding <Host> or <Context> entry instead.
> 
>            For a similar mechanism that is portable to all Servlet 2.4
>            containers, check out the "RequestDumperFilter" Filter in the
>            example application (the source for this filter may be found in
>            "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
> 
>            Request dumping is disabled by default.  Uncomment the following
>            element to enable it. -->
>       <!--
>       <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
>       -->
> 
>       <!-- Because this Realm is here, an instance will be shared globally -->
> 
>       <!-- This Realm uses the UserDatabase configured in the global JNDI
>            resources under the key "UserDatabase".  Any edits
>            that are performed against this UserDatabase are immediately
>            available for use by the Realm.  -->
>       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>              resourceName="UserDatabase"/>
> 
>       <!-- Comment out the old realm but leave here for now in case we
>            need to go back quickly -->
>       <!--
>       <Realm className="org.apache.catalina.realm.MemoryRealm" />
>       -->
> 
>       <!-- Replace the above Realm with one of the following to get a Realm
>            stored in a database and accessed via JDBC -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="org.gjt.mm.mysql.Driver"
>           connectionURL="jdbc:mysql://localhost/authority"
>          connectionName="test" connectionPassword="test"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="oracle.jdbc.driver.OracleDriver"
>           connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
>          connectionName="scott" connectionPassword="tiger"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="sun.jdbc.odbc.JdbcOdbcDriver"
>           connectionURL="jdbc:odbc:CATALINA"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!-- Define the default virtual host
>            Note: XML Schema validation will not work with Xerces 2.2.
>        -->
>       <Host name="localhost" 
>             appBase="webapps"
>             unpackWARs="true" 
>             autoDeploy="true"
>             xmlValidation="false" 
>             xmlNamespaceAware="false">
> 
>         <!-- Defines a cluster for this node,
>              By defining this element, means that every manager will be changed.
>              So when running a cluster, only make sure that you have webapps in there
>              that need to be clustered and remove the other ones.
>              A cluster has the following parameters:
> 
>              className = the fully qualified name of the cluster class
> 
>              name = a descriptive name for your cluster, can be anything
> 
>              mcastAddr = the multicast address, has to be the same for all the nodes
> 
>              mcastPort = the multicast port, has to be the same for all the nodes
>              
>              mcastBindAddr = bind the multicast socket to a specific address
>              
>              mcastTTL = the multicast TTL if you want to limit your broadcast
>              
>              mcastSoTimeout = the multicast readtimeout 
> 
>              mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
> 
>              mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
> 
>              tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes 
> 
>              tcpListenAddress = the listen address (bind address) for TCP cluster request on this host, 
>                                 in case of multiple ethernet cards.
>                                 auto means that address becomes
>                                 InetAddress.getLocalHost().getHostAddress()
> 
>              tcpListenPort = the tcp listen port
> 
>              tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
>                                   has a wakup bug in java.nio. Set to 0 for no timeout
> 
>              printToScreen = true means that managers will also print to std.out
> 
>              expireSessionsOnShutdown = true means that 
> 
>              useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
>                             false means to replicate the session after each request.
>                             false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
>                             <%
>                             HashMap map = (HashMap)session.getAttribute("map");
>                             map.put("key","value");
>                             %>
>              replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
>                                * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
>                                * Synchronous means that the thread that executes the request, is also the
>                                thread the replicates the data to the other nodes, and will not return until all
>                                nodes have received the information.
>                                * Asynchronous means that there is a specific 'sender' thread for each cluster node,
>                                so the request thread will queue the replication request into a "smart" queue,
>                                and then return to the client.
>                                The "smart" queue is a queue where when a session is added to the queue, and the same session
>                                already exists in the queue from a previous request, that session will be replaced
>                                in the queue instead of replicating two requests. This almost never happens, unless there is a 
>                                large network delay.
>         -->             
>         <!--
>             When configuring for clustering, you also add in a valve to catch all the requests
>             coming in, at the end of the request, the session may or may not be replicated.
>             A session is replicated if and only if all the conditions are met:
>             1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
>             2. a session exists (has been created)
>             3. the request is not trapped by the "filter" attribute
> 
>             The filter attribute is to filter out requests that could not modify the session,
>             hence we don't replicate the session after the end of this request.
>             The filter is negative, ie, anything you put in the filter, you mean to filter out,
>             ie, no replication will be done on requests that match one of the filters.
>             The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
> 
>             filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
>             ending with .gif and .js are intercepted.
>             
>             The deployer element can be used to deploy apps cluster wide.
>             Currently the deployment only deploys/undeploys to working members in the cluster
>             so no WARs are copied upons startup of a broken node.
>             The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
>             When a new war file is added the war gets deployed to the local instance,
>             and then deployed to the other instances in the cluster.
>             When a war file is deleted from the watchDir the war is undeployed locally 
>             and cluster wide
>         -->
>         
>         <!--
>         <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
>                  managerClassName="org.apache.catalina.cluster.session.DeltaManager"
>                  expireSessionsOnShutdown="false"
>                  useDirtyFlag="true"
>                  notifyListenersOnReplication="true">
> 
>             <Membership 
>                 className="org.apache.catalina.cluster.mcast.McastService"
>                 mcastAddr="228.0.0.4"
>                 mcastPort="45564"
>                 mcastFrequency="500"
>                 mcastDropTime="3000"/>
> 
>             <Receiver 
>                 className="org.apache.catalina.cluster.tcp.ReplicationListener"
>                 tcpListenAddress="auto"
>                 tcpListenPort="4001"
>                 tcpSelectorTimeout="100"
>                 tcpThreadCount="6"/>
> 
>             <Sender
>                 className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
>                 replicationMode="pooled"
>                 ackTimeout="15000"/>
> 
>             <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
>                    filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
>                    
>             <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
>                       tempDir="/tmp/war-temp/"
>                       deployDir="/tmp/war-deploy/"
>                       watchDir="/tmp/war-listen/"
>                       watchEnabled="false"/>
>         </Cluster>
>         -->        
> 
> 
> 
>         <!-- Normally, users must authenticate themselves to each web app
>              individually.  Uncomment the following entry if you would like
>              a user to be authenticated the first time they encounter a
>              resource protected by a security constraint, and then have that
>              user identity maintained across *all* web applications contained
>              in this virtual host. -->
>         <!--
>         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
>         -->
> 
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.AccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
> 
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>              This access log implementation is optimized for maximum performance,
>              but is hardcoded to support only the "common" and "combined" patterns.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>              This access log implementation is optimized for maximum performance,
>              but is hardcoded to support only the "common" and "combined" patterns.
> 
>              This valve use NIO direct Byte Buffer to asynchornously store the
>              log.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.ByteBufferAccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
> 
>       </Host>
>     </Engine>
>   </Service>
> </Server>
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


-- 
Brian Cook
Digital Services Analyst
Print Time Inc.
bcook@printtime.com
913.345.8900


Mime
View raw message