tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allistair Crossley" <Allistair.Cross...@QAS.com>
Subject RE: jndi question
Date Thu, 25 Aug 2005 13:43:48 GMT
Hi,

> 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.

I don't think that's quite true. META-INF is a permanent valid location for context.xml, and does not affect deployment if /conf/Catalina/localhost/ does not have a file for the web application. We always keep context.xml only in META-INF.

However, if 2 are present this may cause issues as you say,

Allistair.

> -----Original Message-----
> From: Brian Cook [mailto:bcook@printtime.com]
> Sent: 25 August 2005 14:39
> To: Tomcat Users List
> Subject: Re: jndi question
> 
> 
> 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.doHandlePageExceptio
> n(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(JspServlet
> Wrapper.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(JspServlet
> Wrapper.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</ser
> vlet-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.db
> cp.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.GlobalResourcesLifecycle
> Listener" />
> >   <Listener 
> className="org.apache.catalina.storeconfig.StoreConfigLifecycl
> eListener"/>
> > 
> >   <!-- 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;.*\.cs
> s;.*\.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
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message