Re: Unexpected redirect from https to http

2009-01-27 Thread removeps-groups
If the internal redirects and forwards did change the scheme to http, then they 
wouldn't work because there is no http listener.  Is this what you want?

I have no idea, except that perhaps Tomcat changes the scheme to https 
automatically whenever it can.


--- On Mon, 1/26/09, Timothy Tagge tplimi...@gmail.com wrote:

 From: Timothy Tagge tplimi...@gmail.com
 Subject: Unexpected redirect from https to http
 To: users@tomcat.apache.org
 Date: Monday, January 26, 2009, 3:01 PM
 I'm working on an application that does redirects to
 itself.  The
 application is intended to run under https for all pages. 
 However,
 when the redirect is requested, the resulting URL shown in
 the browser
 is http://secureServer/correctDomain/correctPage.jsp   This
 request
 times out because there is no http listener at
 secureServer.  However,
 requests directly to a jsp file in that application via
 https do not
 get changed to http and work just fine.  So the issue only
 happens
 during internal redirects.  Could this be cert related? 
 Apache or
 Tomcat config issue?
 
 Our setup is as follows...
 JDK 1.6.06
 Tomcat 5.5.15
 AJP1.3
 Big IP is providing https with a certificate supplied by
 Verisign
 Host file on the tomcat server that points all calls to
 secureServer
 to the IP Address for Big IP.  Big IP is configured to
 point back to
 tomcat on port 80
 
 
 ### AJP Configuration #
 !-- Define an AJP 1.3 Connector on port 8009 --
 Connector port=8009
enableLookups=false
 redirectPort=8443 protocol=AJP/1.3
 /
 
 ### workers.properties configuration
 #
 worker.worker_aat.type=ajp13
 worker.worker_aat.host=localhost
 worker.worker_aat.port=8009
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Is it possible for error page from one webapp to direct to another?

2009-01-25 Thread removeps-groups
Is it possible for error page from one webapp to direct to another?  What I'm 
thinking is:

In mywebservice/WEB-INF/web.xml

  error-page
error-code404/error-code
location/errors/404.html/location
  /error-page

But I want the error page to be

ROOT/errors/404.html

Thanks.

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: How to have multiple loggers with shared code also using the logger?

2009-01-24 Thread removeps-groups
Here's an update on the logger issue.  It too me long to figure out because I 
ran into an issue about privileged servlets and had to write my own 
log4j.properties parser.

The original code posted earlier in this thread works in that it creates a 
different logger for web application, and allows the user to stop and restart 
the application.

   public static Logger getLogger()
   {
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  URL log4j_properties = classLoader.getResource(log4j_app.properties);
  String loggerName = log4j_properties.toString(); // throws 
NullPointerException if log4j_app.properties does not exist
  synchronized (MyLog.class)
  {
 Logger logger = 
Logger.getRootLogger().getLoggerRepository().exists(loggerName);
 if (logger == null)
 {
logger = Logger.getLogger(loggerName);
PropertyConfigurator.configure(log4j_properties);
System.out.println(Created logger: loggerName= + loggerName);
 }
 return logger;
  }
   }

One bug with the above is the line

PropertyConfigurator.configure(log4j_properties);


The above re-configures the root logger with the new log4j.properties, so 
basically the new configuration applies to all loggers.  What would be nice is

PropertyConfigurator.configure(logger, log4j_properties);

that configures only the specified logger with the log4j_properties.  
Unfortunately, log4j does not have such a function, so I wrote my own (but it 
only supports the properties used in my log4j_app.properties files).

Now, if web application 1 calls MyLog.getLogger() or calls common code that 
calls MyLog.getLogger() then the first logger will be used, and similarly for 
web application 2.

Finally, I create a servlet 

   import org.apache.catalina.manager.ManagerServlet;

   public class TomcatManagerServlet extends ManagerServlet

The servlet is called for /reload, and it calls super.doGet() after doing 
some checks.

It turns out that only privileged web applications can instantiate 
ManagerServlet, so one has to have the following in context.xml:

   Context privileged=true

I'm not sure what is the practical impact of setting privileged=true, though 
the docs said something about the catalina and shared class loaders.

So upon calling

http://localhost/mywebservice/reload?path=/

the ROOT application is stopped and started.  After the application restart, 
all users are logged out and they have to log in again, but the logger 
continues to work.  A call to MyLog.getLogger() does not re-create the logger.

The logger is really owned by the common code in ${catalina.home}/lib.  The 
code 

  URL log4j_properties = classLoader.getResource(log4j_app.properties);

just gets the URL of the log4j.properties file.  However, there is no pointer 
to anything in the webapp, so it's possible to stop the webapp.  And the line

PropertyConfigurator.configure(log4j_properties);

opens the URL (by calling log4j_properties.getInputStream()), reads it, and 
closes it.  So no stream in the webapp is open, and it's possible to stop the 
webapp.



--- On Thu, 1/15/09, Caldarale, Charles R chuck.caldar...@unisys.com wrote:

 From: Caldarale, Charles R chuck.caldar...@unisys.com
 Subject: RE: How to have multiple loggers with shared code also using the 
 logger?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Thursday, January 15, 2009, 11:28 AM
  From: removeps-gro...@yahoo.com
 [mailto:removeps-gro...@yahoo.com]
  Subject: RE: How to have multiple loggers with shared
 code
  also using the logger?
 
  How does one redploy a single application?  Strange, I
  could not find any information on this seemingly basic
  task on google.
 
 Read the real docs first, then Google only if needed.
 http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html#Deploying%20on%20a%20running%20Tomcat%20server
 http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: which JSP web hosting(windows or linux)

2009-01-18 Thread removeps-groups
There's also mochahost.com.

It is not necessary to know Linux to use a Linux plan.  Though be aware that 
file names are case sensitive.

On MochaHost, it looks like if you must use MSSqlServer, then you have to go 
with the Windows plan, and use ASP instead of JSP.  In theory it should be 
possible to use MSSqlServer with Java and Linux.

I only know about Linux.  They have shared plans where many users share the 
same Tomcat and Java virtual machine, then dedicated plans where each user has 
their own Tomcat instance and Java virtual machine (but I think many users are 
on the same machine), and finally you have truly dedicated plans with your own 
machine and SSH access.

--- On Sun, 1/18/09, Sneha Manohar sneha_hams...@yahoo.co.in wrote:

 From: Sneha Manohar sneha_hams...@yahoo.co.in
 Subject: which JSP web hosting(windows or linux)
 To: Tomcat Users List users@tomcat.apache.org
 Date: Sunday, January 18, 2009, 2:49 AM
 Hello ,
 I have some more questions on web hosting . Which web
 hosting I should go for windows or linux . Do I need to
 learn linux if I choose linux hosting . What is the impact
 of linux or windows hosting on my web application.
  
 sneha
 
 --- On Sun, 18/1/09, Rusty Wright
 rusty.wri...@gmail.com wrote:
 
 From: Rusty Wright rusty.wri...@gmail.com
 Subject: Re: which JSP web hosting
 To: Tomcat Users List
 users@tomcat.apache.org
 Date: Sunday, 18 January, 2009, 10:57 AM
 
 I haven't tried any of these but they're in my
 bookmarks:
 
 http://www.godaddy.com/
 http://www.dailyrazor.com/java/private_tomcat.php
 http://www.javaservlethosting.com/index.jsh
 http://rimuhosting.com/
 http://www.slicehost.com/
 
 
 Sneha Manohar wrote:
  Hello,
   I am developing web application using JSP,HTML,Java
 script with MS SQL as
 back end (using JDBC mechanism for connecing to data base)
  Can you please suggest me some web hosting ?
   Regards
  Sneha Manohar
  Anoigma software services
  London
  
  
Add more friends to your messenger and enjoy! Go
 to
 http://messenger.yahoo.com/invite/
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org
 
 
 
 
   Add more friends to your messenger and enjoy! Go to
 http://messenger.yahoo.com/invite/

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: How to have multiple loggers with shared code also using the logger?

2009-01-15 Thread removeps-groups
Thanks, this makes sense.  However, I'd like to find out what is being held 
onto by the log4j.jar.  So I'd like to test it out.  How does one redploy a 
single application?  Strange, I could not find any information on this 
seemingly basic task on google.  Thanks again.


--- On Wed, 1/14/09, Caldarale, Charles R chuck.caldar...@unisys.com wrote:

 From: Caldarale, Charles R chuck.caldar...@unisys.com
 Subject: RE: How to have multiple loggers with shared code also using the
 logger?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Wednesday, January 14, 2009, 9:27 PM
  From: removeps-gro...@yahoo.com
 [mailto:removeps-gro...@yahoo.com]
  Subject: RE: How to have multiple loggers with shared
 code
  also using the logger?
 
  And since the log4j.jar resides in the
 ${catalina.home}/lib
  folder, this root logger is used by all web apps.
 
 The log4j.jar is only there because you put it there.  It
 does not come with the Tomcat distribution, and it's
 normally placed in the WEB-INF/lib directory of each webapp
 that needs it.
 
 By having such a jar in a common location, you've
 pretty much guaranteed that you'll have to take Tomcat
 down to redeploy a single webapp - the old webapp won't
 go away because log4j will be hanging onto references to it.
  (A common cause of PermGen filling up after redeployments.)
 
 The servlet spec (and experience) strongly suggest that
 webapps be kept as isolated as possible for this kind of
 reason.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: How to have multiple loggers with shared code also using the logger?

2009-01-14 Thread removeps-groups
 Because of the classloading hierarchy.  Once the logger is
 initialized with the common classloader, everybody uses that
 one.

Thanks.  I studied the Apache logger code.

When we call org.apache.log4j.Logger.getLogger(), it calls functions of 
LogManager.  The static initializer block of LogManager gets log4j.properties 
using the thread's class loader, so if the first webapp I run is mywebservice, 
then it will get log4j.properties from mywebservice, such as 
mywebservice/WEB-INF/classes/log4j.properties.  The root logger will be 
initialized using this log4j.properties file, and all new loggers will inherit 
this configuration, which does not seem very useful.

And since the log4j.jar resides in the ${catalina.home}/lib folder, this root 
logger is used by all web apps.

So what I did is

(1) Create a log4j.properties in ${catalina.home}/lib/log4j.properties or in a 
jar file here.

(2) This properties file should contain the configuration shared by all app 
loggers.  For me, the file is one line:
log4j.rootLogger=warn

(3) Rename log4j.properties in each webapp and swingapp and JUnit test app to 
log4j_app.properties.

(4) Modify MyLog.getLogger(), which is a function in a jar file that is shared 
by all apps (ie. a function in ${catalina.home}/lib) so that when a logger is 
created, initialize the logger from the appropriate log4j_app.properties.

import org.apache.log4j.PropertyConfigurator;

   /**
* This function attempts to locate log4j_app.properties using the
* thread's classloader, and returns a logger using the location of
* log4j_app.properties as the logger name.
* The logger will be initialized with the configuration in 
log4j_app.properties.
* This allows each application within the web server will use its own 
logger.
* This function is thread-safe, and callers don't need to synchronized on 
MyLog.
* @return
* @throws NullPointerException if log4j_app.properties does not exist
*/
   public static Logger getLogger()
   {
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  URL log4j_properties = classLoader.getResource(log4j_app.properties);
  String loggerName = log4j_properties.toString();
  synchronized (MyLog.class)
  {
 Logger logger = 
Logger.getRootLogger().getLoggerRepository().exists(loggerName);
 if (logger == null)
 {
logger = Logger.getLogger(loggerName);
PropertyConfigurator.configure(log4j_properties);
System.out.println(Created logger: loggerName= + loggerName);
 }
 return logger;
  }
   }

 
 Don't do that.  Keep just one copy of the source
 somewhere, just have your packaging script put the .class
 file in the webapp package.  No need to have an abstract
 class or subclasses.

Not sure if that would work as the log4j.jar is in ${catalina.home}/lib, so the 
root logger is shared by all apps.
 

  (1) Pass a logger from the webapp to the common code
 -- ie.
  to add a Logger argument to all the functions in the
 common
  code, but this sounds tedious.
 
 That's the cost of keeping things isolated, which is a
 worthwhile goal.
 
  (2) In each webapp have a filter that sets a thread
 local
  variable like ThreadLocalLogger threadLogger.
 
 Just make sure you clear the ThreadLocal on *every*
 possible exit path out of your request processing.  If you
 don't, you will have memory leaks in PermGen causing it
 to fill up as webapps are redeployed.



-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: How to have multiple loggers with shared code also using the logger?

2009-01-13 Thread removeps-groups
Why is it what I'm trying to do not working though?  It seems that my 
MyLog.getLogger function does find the correct logger name, and that 
Logger.getLogger() is always using the the first log4j.properties that was 
found.

Yeah, I had tried something like this, namely to have a class AbstractMyLog in 
the common folder, and a class MyLog in each of the webapps that derives from 
AbstractMyLog so as to minimize code changes.  But then the common code also 
needs to write to the log file, and it should use the log file of the web 
application that called it.

The other ideas I had are:

(1) Pass a logger from the webapp to the common code -- ie. to add a Logger 
argument to all the functions in the common code, but this sounds tedious.

(2) In each webapp have a filter that sets a thread local variable like 
ThreadLocalLogger threadLogger.


--- On Tue, 1/13/09, Caldarale, Charles R chuck.caldar...@unisys.com wrote:

 From: Caldarale, Charles R chuck.caldar...@unisys.com
 Subject: RE: How to have multiple loggers with shared code also using the  
 logger?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, January 13, 2009, 6:21 AM
  From: removeps-gro...@yahoo.com
 [mailto:removeps-gro...@yahoo.com]
  Subject: How to have multiple loggers with shared code
 also
  using the logger?
 
  How to have multiple loggers with shared code also
 using the logger?
  In ${catalina.home}/lib there is a jar file that
 contains class MyLog.
 
 Doctor, doctor, it hurts when I do this.
 
 The simple fix is: don't do it.  Package your webapps
 so that each contains a copy of MyLog rather than putting
 that class in the common location.  You can still maintain
 the same source, just make sure the .class file is located
 locally in each webapp that uses it.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



How to have multiple loggers with shared code also using the logger?

2009-01-12 Thread removeps-groups
How to have multiple loggers with shared code also using the logger?

In ${catalina.home}/lib there is a jar file that contains class MyLog.  There 
is a function in it

public class MyLog
{
   public static Logger getLogger()
   {
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  URL log4j_properties = classLoader.getResource(log4j.properties);
  String loggerName = log4j_properties != null ? 
log4j_properties.toString() : default;
  synchronized (MyLog.class)
  {
 Logger logger = 
Logger.getRootLogger().getLoggerRepository().exists(loggerName);
 if (logger == null)
 {
logger = Logger.getLogger(loggerName);
System.out.println(Created logger: loggerName= + loggerName);
 }
 return logger;
  }
   }
}

The jar file in ${catalina.home}/lib contains common code used by all web 
applications, and it calls MyLog.getLogger() to write some logs.

My ROOT application in ${catalina.home}/webapps/ROOT and web service 
application in ${catalina.home}/webapps/mywebservice also call MyLog.

The intent of getLogger() above is to return the logger for the application 
currently being run.  I have verified that 
Thread.currentThread().getContextClassLoader().hashCode() has value1 for the 
ROOT application and value2 for the mywebservice application. 

We have the following two log4j.properties:
${catalina.home}/webapps/ROOT/WEB-INF/lib/root.jar!/log4j.properties
${catalina.home}/webapps/mywebservice/WEB-INF/lib/root.jar!/log4j.properties

The value of loggerName is the first one when we're running the ROOT 
application, and the second one when running the mywebservice application.  So 
far, so good.

After starting Tomcat, if we run the ROOT application first, then it will call 
MyLog.getLogger(), and the log4j.properties found by the call to 
Logger.getLogger() will be the first one above.  If we run mywebservice first, 
then Logger.getLogger() will find the second log4j.properties file.  Any 
subsequent call to Logger.getLogger() will use the same log4j.properties.  So 
suppose we run the ROOT application first, then the new logger will be 
initialized with the first log4j.properties above.  And then if mywebservice 
calls MyLog.getLogger(), a new logger will get created, but it will be based on 
the same log4j.properties file.  You can see this because all applications log 
to the same file (each of my log4j.properties specifies a different file).



-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: How can the login page see parameters in the original request?

2009-01-01 Thread removeps-groups
Do you mean set session attributes?  How do you do that from the client side?


--- On Wed, 12/31/08, Konstantin Kolinko knst.koli...@gmail.com wrote:

 From: Konstantin Kolinko knst.koli...@gmail.com
 Subject: Re: How can the login page see parameters in the original request?
 To: Tomcat Users List users@tomcat.apache.org, removeps-gro...@yahoo.com
 Date: Wednesday, December 31, 2008, 5:43 AM
 2008/12/30  removeps-gro...@yahoo.com:
  To hide the existence of the page from robots.
 
  --- On Tue, 12/30/08, Pid p...@pidster.com wrote:
 
  From: Pid p...@pidster.com
  Subject: Re: How can the login page see parameters
 in the original request?
  To: Tomcat Users List
 users@tomcat.apache.org
  Date: Tuesday, December 30, 2008, 6:26 AM
  removeps-gro...@yahoo.com wrote:
 
   Only if certain secret fields and values are
 present,
  do I want to generate the login page.
 
  They're not really secret if you're
 passing them as
  parameters.
  It sounds like you're trying to over-engineer
  something, which often
  results in no security improvements and sometimes
  introduces flaws.
 
  What is your real goal?
 
 
 
 How about passing them with the Session?
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: How can the login page see parameters in the original request?

2009-01-01 Thread removeps-groups
Most thorough, thanks!


--- On Thu, 1/1/09, Konstantin Kolinko knst.koli...@gmail.com wrote:

 From: Konstantin Kolinko knst.koli...@gmail.com
 Subject: Re: How can the login page see parameters in the original request?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Thursday, January 1, 2009, 3:53 PM
 2009/1/1  removeps-gro...@yahoo.com:
  Do you mean set session attributes?  How do you do
 that from the client side?
 
 
 
 a) You can set them in another page (an unprotected one)
 that is
 accessed before,
 or that redirects to this one.
 
 b) You can pass your secrets as a cookie, or as a request
 header. Cookies
 can be created on the client side.
 
 c) You can use RemoteAddrValve and block those clients that
 should not
 know about your service.
 
 d) You can throw away all the security constraints from
 web.xml and use
 alternative approaches, e.g. those that implement a Filter,
 e.g.
 
 securityfilter ([1]), that is ofter mentioned on this list
 and should be easy
 to adopt, or some others
 
 [1] http://securityfilter.sourceforge.net/
 
 Best regards,
 Konstantin Kolinko
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: How can the login page see parameters in the original request?

2008-12-30 Thread removeps-groups
To hide the existence of the page from robots.


--- On Tue, 12/30/08, Pid p...@pidster.com wrote:

 From: Pid p...@pidster.com
 Subject: Re: How can the login page see parameters in the original request?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, December 30, 2008, 6:26 AM
 removeps-gro...@yahoo.com wrote:
 
  Only if certain secret fields and values are present,
 do I want to generate the login page.  
 
 They're not really secret if you're passing them as
 parameters.
 It sounds like you're trying to over-engineer
 something, which often
 results in no security improvements and sometimes
 introduces flaws.
 
 What is your real goal?
 
 p
 
 
 
 -
  To unsubscribe, e-mail:
 users-unsubscr...@tomcat.apache.org
  For additional commands, e-mail:
 users-h...@tomcat.apache.org
  
  
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



How can the login page see parameters in the original request?

2008-12-29 Thread removeps-groups
How can the login page see parameters in the original request?

In my app, I make a request to https://localhost/mywebservice/action.do.
Because the user is not authenticated, Tomcat redirects them to the login page. 
 I want the login page to be able to see the parameters passed in the original 
request.  Only if certain secret fields and values are present, do I want to 
generate the login page.  Otherwise, I want to send the response code 404.

In FormAuthenticator.java, function saveRequest, they have

if (POST.equalsIgnoreCase(request.getMethod())) {
ByteChunk body = new ByteChunk();
body.setLimit(request.getConnector().getMaxSavePostSize());

byte[] buffer = new byte[4096];
int bytesRead;
InputStream is = request.getInputStream();

while ( (bytesRead = is.read(buffer) ) = 0) {
body.append(buffer, 0, bytesRead);
}
saved.setContentType(request.getContentType());
saved.setBody(body);
}

Maybe the act of reading the input stream through is.read uses it up, not sure.


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: Case-insensitive JDBC Realm j_security_check

2008-12-18 Thread removeps-groups
Yes, this is possible.  Override JDBCRealm.authenticate.

Details:

1. Class is org.apache.catalina.realm.JDBCRealm.
2. Override authenticate of 2 arguments.  I guess you would convert username 
and/or password to lowercase and call super.authenticate.
3. The jar file containing your class, or the class file itself should go into 
${catalina.home}/lib.
4. You will probably reference the new class in the Realm and Resource elements 
of context.xml or server.xml.


--- On Thu, 12/18/08, Tokajac imre_to...@hotmail.com wrote:

 From: Tokajac imre_to...@hotmail.com
 Subject: Case-insensitive JDBC Realm j_security_check
 To: users@tomcat.apache.org
 Date: Thursday, December 18, 2008, 6:37 AM
 Hello!
 
 
 Is it possible to adapt REALM authentication of Tomcat, so
 that Username and
 password become case insensitive?
 
 
 Regards
 -- 
 View this message in context:
 http://www.nabble.com/Case-insensitive-JDBC-Realm-j_security_check-tp21073984p21073984.html
 Sent from the Tomcat - User mailing list archive at
 Nabble.com.
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



How to install the session cookie into the original request of the secure area?

2008-12-16 Thread removeps-groups
How to install the session cookie into the original request of the secure area?

Here is my problem.  When making a connection to the secure area of my website 
through code, the original request is saved, but the JSESSIONID cookie is not 
added to it.  So after j_security_check succeeds, the saved request fails.

Details:

(1) Open a URL connection to https://localhost/mywebservice/secure/action.do;. 
 There are no cookies.
(2) Tomcat redirects to https://localhost/mywebservice/secure/login.html; as 
specified in web.xml.  Tomcat also saves the request in (1).
(3) A servlet creates the page and sends it back.  The response has a 
JSESSOINID cookie in it.
(4) The client reads the response and saves the cookie.
(5) The clien opens a connection to 
https://localhost/mywebservice/secure/j_security_check;, and passes 
j_username, j_password, and JSESSIONID.
(6) The authentication succeeds on the server.
(7) The server goes on to process the saved request (1) above.
(8) But there are no cookies, so the request fails and we get the login page 
again.

There's a function in Tomcat that calls req.getCookies(), and the result is an 
array of length 0.

By contrast, when I open Mozilla and go to a secure section of my website, 
Tomcat saves the original request.  It then sends back the login page.  Upon a 
succesful login, Tomcat processes the saved request, and in the debugger I can 
see that the above function req.getCookies() returns an array of size 1, and it 
is the correct JSESSION cookie.

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



unable to login to second application because of password digest issues

2008-12-14 Thread removeps-groups
Hi.  I added a second application, but am unable to login to it because of 
password digest issues.  Stepping into RealmBase.java this is what I find:

When I log in to the primary application (under ROOT) the password is 
test and the password saved in the database is the sha1 which is 
a743f6004188c384dbf566c0811ca0c978e07a9b.

In JDBCRealm.digest, which is called by authenticate, there is a line

return (HexUtils.convert(md.digest()));

Incidentally, the second call to md.digest() returns a new result, although 
there is a call to md.reset() at the start of the try block.

When I put HexUtils.convert(md.digest()) into the debug watch, I get

HexUtils.convert(md.digest())   a743f6004188c384dbf566c0811ca0c978e07a9b  
String  

This matches what's in the database.  Of course when I let the debugger 
continue the login fails because the code itself calls md.digest which returns 
a new result.

So if I did not add that expression to the watch window, the login would work.  
And this is the case.

Now onto my second application.  The login is also test, although the 
username, table name, and column names are different.

However, When I put HexUtils.convert(md.digest()) into the debug watch, I get

HexUtils.convert(md.digest())   5fd0b97a45856c5581c1022c2e59ea00670e1040  
String  

This does not match the value in the database, so the login fails.

In fact, if I don't add any breakpoints and let the code run, the login fails, 
and my guess is that's because digest returns the wrong value.  By contrast, 
for the ROOT application, digest returns the right value and the login succeeds 
-- as long as there are no breakpoints and watch variables.

Incidentally, in both cases, the next call to HexUtils.convert(md.digest()) 
yields

HexUtils.convert(md.digest())   da39a3ee5e6b4b0d3255bfef95601890afd80709  
String  
HexUtils.convert(md.digest())   da39a3ee5e6b4b0d3255bfef95601890afd80709  
String  

And the value remains the same even for the next call to 
HexUtils.convert(md.digest()).

Strange problem.

Thanks.

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: unable to login to second application because of password digest issues

2008-12-14 Thread removeps-groups
Nevermind, I figured it out.  In the second request to login, there was an 
extra line, so the password was actually test\r\n.


--- On Sun, 12/14/08, removeps-gro...@yahoo.com removeps-gro...@yahoo.com 
wrote:

 From: removeps-gro...@yahoo.com removeps-gro...@yahoo.com
 Subject: unable to login to second application because of password digest 
 issues
 To: users@tomcat.apache.org
 Date: Sunday, December 14, 2008, 2:55 PM
 Hi.  I added a second application, but am unable to login to
 it because of password digest issues.  Stepping into
 RealmBase.java this is what I find:
 
 When I log in to the primary application (under ROOT) the
 password is test and the password saved in
 the database is the sha1 which is
 a743f6004188c384dbf566c0811ca0c978e07a9b.
 
 In JDBCRealm.digest, which is called by authenticate, there
 is a line
 
 return (HexUtils.convert(md.digest()));
 
 Incidentally, the second call to md.digest() returns a new
 result, although there is a call to md.reset() at the start
 of the try block.
 
 When I put HexUtils.convert(md.digest()) into the debug
 watch, I get
 
 HexUtils.convert(md.digest()) a743f6004188c384dbf566c0811ca0c978e07a9b  
 String  
 
 This matches what's in the database.  Of course when I
 let the debugger continue the login fails because the code
 itself calls md.digest which returns a new result.
 
 So if I did not add that expression to the watch window,
 the login would work.  And this is the case.
 
 Now onto my second application.  The login is also
 test, although the username, table name, and
 column names are different.
 
 However, When I put HexUtils.convert(md.digest()) into the
 debug watch, I get
 
 HexUtils.convert(md.digest()) 5fd0b97a45856c5581c1022c2e59ea00670e1040  
 String  
 
 This does not match the value in the database, so the login
 fails.
 
 In fact, if I don't add any breakpoints and let the
 code run, the login fails, and my guess is that's
 because digest returns the wrong value.  By contrast, for
 the ROOT application, digest returns the right value and the
 login succeeds -- as long as there are no breakpoints and
 watch variables.
 
 Incidentally, in both cases, the next call to
 HexUtils.convert(md.digest()) yields
 
 HexUtils.convert(md.digest()) da39a3ee5e6b4b0d3255bfef95601890afd80709  
 String  
 HexUtils.convert(md.digest()) da39a3ee5e6b4b0d3255bfef95601890afd80709  
 String  
 
 And the value remains the same even for the next call to
 HexUtils.convert(md.digest()).
 
 Strange problem.
 
 Thanks.

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Server returned HTTP response code: 408 for URL: https...j_security_check

2008-12-14 Thread removeps-groups
Server returned HTTP response code: 408 for URL: https...j_security_check

In my testing I get the following error:

Server returned HTTP response code: 408 for URL: 
https://localhost:6143/mywebservice/action/j_security_check

408 = request time out.

So the question is how can a client authenticate themselves?  Do you have to 
figure out a JSESSION id somehow?

The code is

   public static void main(String[] args)
   {
  BufferedReader responseReader = null;
  try
  {
 URL url = new 
URL(https://localhost:6143/mywebservice/action/j_security_check;);
 HttpURLConnection connection = (HttpURLConnection) 
url.openConnection();
 connection.setRequestMethod(POST);
 connection.setUseCaches(false);
 connection.setAllowUserInteraction(false);
 connection.setDoOutput(true);
 PrintWriter requestParamsWriter = new 
PrintWriter(connection.getOutputStream());
 requestParamsWriter.print(j_username=junkuserj_password=test);
 requestParamsWriter.flush();
 requestParamsWriter.close();
 requestParamsWriter = null;
 responseReader = new BufferedReader(new 
InputStreamReader(connection.getInputStream()));
 while (true)
 {
String line = responseReader.readLine();
if (line == null) break;
System.out.println(line);
 }
  }
  catch (IOException e)
  {
 e.printStackTrace();
  }
  finally
  {
 try
 {
if (responseReader != null) responseReader.close();
 }
 catch (Exception e)
 {
e.printStackTrace();
 }
  }
   }



-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Server returned HTTP response code: 408 for URL: https...j_security_check

2008-12-14 Thread removeps-groups
But how does this work through code?  My initial request is to 
http://localhost/mywebservice/file.do; (and all this is through Java code 
similar to below).

Tomcat redirects the request to the login page specified in web.xml 
http://localhost/mywebservice/login.html;.  Then either Tomcat returns this 
page to the user, or invokes a servlet that constructs the page and returns is 
to the user.

Then it seems Tomcat remembers the original request.

Now the user sees a login page with the j_username and j_password form fields.  
In code, they get the output stream and it instructs them to login, though my 
page does not have the form fields in it.

So in code the client constructs a login request.  The request input stream is 
set to j_username=usernamej_password=password.  But to what URL should the 
above response be posted?  I would imagine that it should be to 
http://localhost/mywebservice/j_security_check; because the login page is 
typically like this

form action=j_security_check ../form.

A browser does not know about Tomcat protocols, so it would I imagine  send the 
request to j_security_check.  Then I imagine that Tomcat intercepts the request 
and validates the login, and then forwards to the original page (which must 
have remembered).

So it makes sense to me that through code one may make requests to 
j_security_check.  Just this would not not a recommended practice to users 
typing something into the address bar.

So any ideas on how to make https requests through code?


--- On Sun, 12/14/08, Caldarale, Charles R chuck.caldar...@unisys.com wrote:

 From: Caldarale, Charles R chuck.caldar...@unisys.com
 Subject: RE: Server returned HTTP response code: 408 for URL:  
 https...j_security_check
 To: Tomcat Users List users@tomcat.apache.org
 Date: Sunday, December 14, 2008, 7:20 PM
  From: removeps-gro...@yahoo.com
 [mailto:removeps-gro...@yahoo.com]
  Subject: Server returned HTTP response code: 408 for
 URL:
  https...j_security_check
 
  Server returned HTTP response code: 408 for URL:
 
 https://localhost:6143/mywebservice/action/j_security_check
 
 You're not allowed to reference j_security_check
 directly.  The URL must refer to a protected resource (as
 declared in your web.xml), at which point Tomcat will
 internally call up the j_security_check.  if the
 authentication succeeds, the original request will then be
 reattempted automatically.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Server returned HTTP response code: 408 for URL: https...j_security_check

2008-12-14 Thread removeps-groups
 It should be a POST request to /[webapp]/j_security_check,
 and include the JSESSIONID cookie set by the server when the
 login page was returned.

Thanks, this seems to be the issue.  There is a call to 
org.apache.catalina.connector.Request.setRequestedSessionId(String id) from  
parseSessionCookiesId?

How does the client get the JSESSIONID?  When the server generates the login 
page does it have to call response.addCookie?  From where should the servlet 
get the session id?  How does the client read the cookie?

Thanks. 



--- On Sun, 12/14/08, Caldarale, Charles R chuck.caldar...@unisys.com wrote:

 From: Caldarale, Charles R chuck.caldar...@unisys.com
 Subject: RE: Server returned HTTP response code: 408 for URL:   
 https...j_security_check
 To: Tomcat Users List users@tomcat.apache.org
 Date: Sunday, December 14, 2008, 9:02 PM
  From: removeps-gro...@yahoo.com
 [mailto:removeps-gro...@yahoo.com]
  Subject: RE: Server returned HTTP response code: 408
 for URL:
  https...j_security_check
 
  The request input stream is set to
 
 j_username=usernamej_password=password.
 
 Good so far.
 
  But to what URL should the above response be posted?
 
 It should be a POST request to /[webapp]/j_security_check,
 and include the JSESSIONID cookie set by the server when the
 login page was returned.
 
  form action=j_security_check
 ../form.
 
 Again, note that the method should be POST (which your code
 does seem to be doing).
 
  A browser does not know about Tomcat protocols, so it
  would I imagine send the request to j_security_check.
 
 Correct, but that's accepted by Tomcat only when a
 login form has just been returned to the client. 
 There's no indication in your code that the
 j_security_check is being sent as a response to a login
 form, nor is the required JSESSIONID cookie being returned.
 
  So any ideas on how to make https requests through
 code?
 
 This isn't tied to HTTPS, just form login.  The SSL
 negotiation is completely separate.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail:
 users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Server returned HTTP response code: 408 for URL: https...j_security_check

2008-12-14 Thread removeps-groups
Nevermind, I see that JSESSIONID is added to the response automatically from 
Tomcat.

The code

System.out.println(connection.getHeaderField(Set-Cookie));

prints

JSESSIONID=56136B3CE4CC657DD36C226E264A97AD; Path=/mywebservice; Secure

So now I think I just have to include that cookie in every request.  Will write 
back if it does not work.



--- On Sun, 12/14/08, removeps-gro...@yahoo.com removeps-gro...@yahoo.com 
wrote:

 From: removeps-gro...@yahoo.com removeps-gro...@yahoo.com
 Subject: RE: Server returned HTTP response code: 408 for URL:   
 https...j_security_check
 To: Tomcat Users List users@tomcat.apache.org
 Date: Sunday, December 14, 2008, 9:18 PM
  It should be a POST request to
 /[webapp]/j_security_check,
  and include the JSESSIONID cookie set by the server
 when the
  login page was returned.
 
 Thanks, this seems to be the issue.  There is a call to
 org.apache.catalina.connector.Request.setRequestedSessionId(String
 id) from  parseSessionCookiesId?
 
 How does the client get the JSESSIONID?  When the server
 generates the login page does it have to call
 response.addCookie?  From where should the servlet get the
 session id?  How does the client read the cookie?
 
 Thanks. 
 
 
 
 --- On Sun, 12/14/08, Caldarale, Charles R
 chuck.caldar...@unisys.com wrote:
 
  From: Caldarale, Charles R
 chuck.caldar...@unisys.com
  Subject: RE: Server returned HTTP response code: 408
 for URL:   https...j_security_check
  To: Tomcat Users List
 users@tomcat.apache.org
  Date: Sunday, December 14, 2008, 9:02 PM
   From: removeps-gro...@yahoo.com
  [mailto:removeps-gro...@yahoo.com]
   Subject: RE: Server returned HTTP response code:
 408
  for URL:
   https...j_security_check
  
   The request input stream is set to
  
 
 j_username=usernamej_password=password.
  
  Good so far.
  
   But to what URL should the above response be
 posted?
  
  It should be a POST request to
 /[webapp]/j_security_check,
  and include the JSESSIONID cookie set by the server
 when the
  login page was returned.
  
   form action=j_security_check
  ../form.
  
  Again, note that the method should be POST (which your
 code
  does seem to be doing).
  
   A browser does not know about Tomcat protocols,
 so it
   would I imagine send the request to
 j_security_check.
  
  Correct, but that's accepted by Tomcat only when a
  login form has just been returned to the client. 
  There's no indication in your code that the
  j_security_check is being sent as a response to a
 login
  form, nor is the required JSESSIONID cookie being
 returned.
  
   So any ideas on how to make https requests
 through
  code?
  
  This isn't tied to HTTPS, just form login.  The
 SSL
  negotiation is completely separate.
  
   - Chuck
  
  
  THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
  OTHERWISE PROPRIETARY MATERIAL and is thus for use
 only by
  the intended recipient. If you received this in error,
  please contact the sender and delete the e-mail and
 its
  attachments from all computers.
  
 
 -
  To unsubscribe, e-mail:
 users-unsubscr...@tomcat.apache.org
  For additional commands, e-mail:
  users-h...@tomcat.apache.org

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: configure JNDI to avoid error Last packet sent to the server was xxxxx ms ago

2008-12-09 Thread removeps-groups
Yeah, the validationQuery seems to have fixed the problem.  I guess a full week 
of non-use of the website should tell for sure.


--- On Tue, 12/9/08, Kees Jan Koster [EMAIL PROTECTED] wrote:

 From: Kees Jan Koster [EMAIL PROTECTED]
 Subject: Re: configure JNDI to avoid error Last packet sent to the server 
 was x ms ago
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, December 9, 2008, 6:55 AM
 Dear removeps-groups,
 
  Thanks for the links.  But in answer to the issues
 below:
 
  chmod 600 is not sufficient because the admin of my
 website should  
  not be able to see the passwords either.  And if
 you're using a web  
  hosting service, all the more reason.
 
  The decryption algorithm may need a license key which
 is installed  
  only on that machine, so copying the contents of the
 lib folder may  
  not be sufficient.  Though I have to admit, mines is
 not that complex!
 
 Euh. You admin probably has root. Even chmod 000 won't
 stop him. If  
 your implementation does not work with a license server,
 you've wasted  
 your time. Sorry. :-)
 
 Have you managed to fix your connection pool issues?
 
 Kees Jan
 
  --- On Sun, 12/7/08, Kees Jan Koster
 [EMAIL PROTECTED] wrote:
 
  From: Kees Jan Koster [EMAIL PROTECTED]
  Subject: Re: configure JNDI to avoid error
 Last packet sent to the  
  server was x ms ago
  To: Tomcat Users List
 users@tomcat.apache.org
  Date: Sunday, December 7, 2008, 12:39 AM
 
  Hmm. Lots of trouble for a file that you can just
 chmod 600
  to avoid
  this whole issue. But that's just how I do
 this.
 
  You realize of course that this precisely as safe
 as
  storing a plain-
  text password. I mean, if I can read this file
 with the
  encrypted
  password, I can see that you use a non-standard
 MySQL
  driver. So I
  would just download the contents of your
 Tomcat's lib
  directories. I
  presume they have the same directory and file
 permissions
  as the data
  source config file.
 
  I don't care what the password is. I just copy
 your
  config, plop the
  contents of your Tomcat's lib dir into mine
 and I can
  connect to your
  database just fine.
 
 
 
 
 -
  To unsubscribe, e-mail:
 [EMAIL PROTECTED]
  For additional commands, e-mail:
 [EMAIL PROTECTED]
 
 
 
 --
 Kees Jan
 
 http://java-monitor.com/forum/
 [EMAIL PROTECTED]
 06-51838192
 
 The secret of success lies in the stability of the goal. --
 Benjamin  
 Disraeli
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Tomcat not displaying jsp files.

2008-12-08 Thread removeps-groups
What address are you typing into the address/location bar?

--- On Mon, 12/8/08, Gaurav Pruthi [EMAIL PROTECTED] wrote:

 From: Gaurav Pruthi [EMAIL PROTECTED]
 Subject: Tomcat not displaying jsp files.
 To: Tomcat Users List users@tomcat.apache.org
 Date: Monday, December 8, 2008, 5:27 AM
 Hi,
 
 I am facing a strange issue infact from past one year. I am
 using tomcat
 virtual hosting but i am not able to run jsp pages in the
 root directory.
 Every time i have to create a directory in the AppBase and
 have to put all
 the jsp pages into it so that they could get executed.
 
 Here are my VirtualHost configured in server.xml file.
 
 Host name=www.mydomain.com
 debug=0
 appBase=/usr/local/tomcat/webapps/www.mydomain.com
 unpackWARs=true
 Valve
 className=org.apache.catalina.valves.AccessLogValve
 directory=/usr/local/tomcat/logs
 prefix=www.mydomain.com.access.
 suffix=.log pattern=common
 resolveHosts=false/
 Context path=/servlet
 docBase=servlet debug=0
 reloadable=true
 crossContext=true
 Logger
 className=org.apache.catalina.logger.FileLogger
 directory=/usr/local/tomcat/logs
 prefix=www.mydomain.com.access
 suffix=.log timestamp=true/
 /Context
 Aliasmydomain.com/Alias
 /Host
 
 
 When i am keeping jsp files in
 /usr/local/tomcat/webapps/www.mydomain.com/Folder, blank
 page is
 displayed.
 
 But If i am keeping jsp file in /usr/local/tomcat/webapps/
 www.mydomain.com/newfolder/ directory, then page is
 displayed.
 
 Using apache-tomcat 6.0.16
 
 Kindly let me know if any other information is required
 
 I am totally confused on this issue. I checked on the net
 but in vain.
 
 
 
 Kindly Help.
 
 
 
 
 
 Thanks  Regards,
 Gaurav Pruthi

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: configure JNDI to avoid error Last packet sent to the server was xxxxx ms ago

2008-12-07 Thread removeps-groups
Thanks for the links.  But in answer to the issues below:

chmod 600 is not sufficient because the admin of my website should not be able 
to see the passwords either.  And if you're using a web hosting service, all 
the more reason.

The decryption algorithm may need a license key which is installed only on that 
machine, so copying the contents of the lib folder may not be sufficient.  
Though I have to admit, mines is not that complex!


--- On Sun, 12/7/08, Kees Jan Koster [EMAIL PROTECTED] wrote:

 From: Kees Jan Koster [EMAIL PROTECTED]
 Subject: Re: configure JNDI to avoid error Last packet sent to the server 
 was x ms ago
 To: Tomcat Users List users@tomcat.apache.org
 Date: Sunday, December 7, 2008, 12:39 AM

 Hmm. Lots of trouble for a file that you can just chmod 600
 to avoid  
 this whole issue. But that's just how I do this.
 
 You realize of course that this precisely as safe as
 storing a plain- 
 text password. I mean, if I can read this file with the
 encrypted  
 password, I can see that you use a non-standard MySQL
 driver. So I  
 would just download the contents of your Tomcat's lib
 directories. I  
 presume they have the same directory and file permissions
 as the data  
 source config file.
 
 I don't care what the password is. I just copy your
 config, plop the  
 contents of your Tomcat's lib dir into mine and I can
 connect to your  
 database just fine.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



default application versus secondary application

2008-12-07 Thread removeps-groups
Sorry, I could not find info on this topic on the internet, though I'm sure 
it's there.

My directory structure is like this:

c:\webapps\
c:\webapps\ROOT\
c:\webapps\ROOT\index.html
c:\webapps\secondApp\
c:\webapps\secondApp\index.html

To use the second application I type

http://localhost/secondApp/index.html

Now suppose I have the following files

c:\webapps\ROOT\secondApp\
c:\webapps\ROOT\secondApp\index.html

When I enter the above URL, Tomcat still shows the contents of

c:\webapps\secondApp\index.html


So the questions are:

(1) What are the reasons to create many applications?
(2) Will an application with name X hide a folder with name X in the 
root/default application?

Thanks.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: configure JNDI to avoid error Last packet sent to the server was xxxxx ms ago

2008-12-06 Thread removeps-groups
But I need to re-trigger the operation (such as an INSERT statement), and also 
to remove the dead connection from the pool or reconnect it.


--- On Sat, 12/6/08, Ken Bowen [EMAIL PROTECTED] wrote:

 From: Ken Bowen [EMAIL PROTECTED]
 Subject: Re: configure JNDI to avoid error Last packet sent to the server 
 was x ms ago
 To: Tomcat Users List users@tomcat.apache.org
 Date: Saturday, December 6, 2008, 4:39 PM
 Can't you deal with the connection being closed in your
 finally block  
 by using this code:
 
 if (connection != null  !connection.isClosed())
 connection.close();
 
 
 On Dec 6, 2008, at 6:50 PM, [EMAIL PROTECTED]
 wrote:
 
  The second message -- connection has already been
 closed -- most  
  likely arises from my code structure, which is:
 
  Connection connection = null;
  PreparedStatement prepStmt = null;
  try
  {
Connection connection = getConnection();
PreparedStatement prepStmt =
 connection.prepareStatement(...);
...
  }
  finally
  {
if (prepStmt != null) prepStmt.close();
if (connection != null) connection.close();
  }
 
  The call to getConnection() in the try block gets a
 connection from  
  the pool.  But the server has closed this connection. 
 Therefore the  
  call to prepareStatement throws a SQLException which
 is the last  
  packet exception.
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



configure JNDI to avoid error Last packet sent to the server was xxxxx ms ago

2008-12-05 Thread removeps-groups
How to configure JNDI in order to avoid the error Last packet sent to the 
server was x ms ago.?  I've seen two other errors which seem to be from 
the same cause: Communications link failure and Connection.close90 has 
already been called.

This is what I've come up with, but wonder if it is is good and efficient:

  Resource name=jdbc/myname
auth=Container
type=javax.sql.DataSource
driverClassName=my.custom.mysql.Driver
url=[EMAIL PROTECTED]:mysql://localhost:3306
username=user
password=encode:abcdefg
initialSize=1 maxActive=15 maxIdle=15 
minEvictableIdleTimeMillis=4320
maxWait=5000 removeAbandoned=true removeAbandonedTimeout=30 
logAbandoned=true
testOnBorrow=true testWhileIdle=true validationQuery=select 
1/


The my.custom.mysql.Driver class decodes and decrypts the password, and passes 
these to the base class, which is com.mysql.jdbc.NonRegisteringDriver.

I read that the validationQuery=select 1 validates the connection before 
returning it to the user.  If the select statement fails, then the connection 
is removed from the pool and a new one is created.

What I'm not sure is if I need the testOnBorrow=true and testWhileIdle=true.

The MySQL connection timeout is 12 hours, so I set 
minEvictableIdleTimeMillis=4320.  From the doc at 
http://svn.apache.org/repos/asf/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml,
 it looks like this is the minimum time that the connection may sit idle in the 
pool until it is considered for eviction/removal.  So I set the value to 12 
hours.  So I imagine that after 12 hours, the validation query will run and it 
will fail because the connection has been closed on the server, and so the idle 
connection will be removed.

In my case, the last packet was sent about 57xxx milliseconds ago, which is 
less than a minute, which is much less than the 12 hour MySQL connection 
timeout.  Yet the error happens only after around 12 hours.  I expect the error 
to be ... 4320 ms ago or something like that.

Also, I read that the validationQuery adds performance overhead, and maybe the 
Java code should handle exceptions.  But how would this work?  I'm guessing you 
catch the SQLException, and if it is Last packet sent to the server was x 
ms ago then call connection.reconnect and attempt the operation again.  But 
java.sql.Connection does not have a function reconnect.

The other thing I could try in code, is that after getting the connection by 
calling ctx.lookup(java:comp/env/jdbc/myname), is to call 
connection.isValid() or connection.isClosed(), and if the connection is closed 
then call something to remove it from the pool.  But java.sql.Connection does 
not have a function removeMeFromThePoolIBelongTo().

Finally, I'm concerned about maxIdle=15 and removeAbandoned=true.  If a 
connection is used for a SQL statement then closed, it becomes idle.  But then, 
will it be removed?  Or does removeAbandoned=true only apply to connections 
that are still active (i.e. connection.close() has not been called on it) for 
removeAbandonedTimeout=30 seconds?

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Setup Logging for Tomcat 6

2008-11-24 Thread removeps-groups
To setup log4j, here's what I did.

Copy the log4j jar file to WEB-INF/lib.  Put it in ${catalina.home}/lib if you 
want all webapps to be able to see this file.

Create a log4j.properties.  Initially this file was in 
WEB-INF/classes/log4j.properties.  Now I have the file in 
WEB-INF/lib/myjarfile.jar!log4j.properties (that is, at the root level of the 
jar file).

That's it, if I remember correctly.

When the properties file specifies a relative filename, it appears to be 
relative to ${catalina.home}, so specify for example logs/myfile.log.

--- On Mon, 11/24/08, dOE [EMAIL PROTECTED] wrote:

 From: dOE [EMAIL PROTECTED]
 Subject: Setup Logging for Tomcat 6
 To: Tomcat User-List users@tomcat.apache.org
 Date: Monday, November 24, 2008, 8:25 AM
 I have downloaded Apache-log4j-1.2.15.zip from
 http://tomcat.apache.org/tomcat-6.0-doc/logging.html, and
 began to following
 some of the steps, and then I am left clueless on what to
 do following the
 creation of the log4j.properties file, and copying
 log4j-1.2.15.jar in
 /tomca/lib.  Then it asks to Place
 output/extras/tomcat-juli-adapters.jarin
 $CATALINA_HOME/lib.  I don't
 know where output/extras is?
 
 Any further guidance in this would be much MUCH
 appreciated.

-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Default location

2008-11-21 Thread removeps-groups
You have to specify the servlet classname in the WEB-INF/web.xml file.  The jar 
or class file containing the servlet must be on your classpath.  The classpath 
in Tomcat is the following to the best of my knowledge, though I don't know the 
order

- the system classpath
- the ${catalina.home}/lib
- application/WEB-INF/classes 
- application/WEB-INF/lib

There is also a common lib folder that I heard about, and there might be others.


--- On Fri, 11/21/08, kcg_ [EMAIL PROTECTED] wrote:

 From: kcg_ [EMAIL PROTECTED]
 Subject: Default location
 To: users@tomcat.apache.org
 Date: Friday, November 21, 2008, 10:27 AM
 Hello,
 
 
 Can anyone tel me what is the default location where tomcat
 looks for
 servlets?
 
 
 Thanks!
 
 
 kcg_
 -- 
 View this message in context:
 http://www.nabble.com/Default-location-tp20627077p20627077.html
 Sent from the Tomcat - User mailing list archive at
 Nabble.com.
 
 
 -
 To start a new topic, e-mail: users@tomcat.apache.org
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]

-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



How do I configure server.xml for Tomcat to recognize my application directory?

2008-11-18 Thread removeps-groups
How do I configure server.xml for Tomcat to recognize the following setup?

Tomcat is in
C:\Program Files\Apache Software Foundation\Tomcat 6.0

The application is in
C:\public_html

The directory structure of the application is
C:\public_html\index.html
C:\public_html\WEB-INF\
C:\public_html\WEB-INF\web.xml
C:\public_html\META-INF
C:\public_html\META-INF\context.xml

What should server.xml look like?

I tried the following, but it did not work.  Upon navigating to 
http://localhost; or http://localhost/index.html; the error message is:
The requested resource () is not available.

It seems the the problem might be the directory structure, and appBase, and 
docBase.


Server port=8005 shutdown=SHUTDOWN

   Listener className=org.apache.catalina.core.AprLifecycleListener 
SSLEngine=on/
   Listener className=org.apache.catalina.core.JasperListener/
   Listener className=org.apache.catalina.mbeans.ServerLifecycleListener/
   Listener 
className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener/

   Service name=Catalina
  
  Connector port=80 protocol=HTTP/1.1 
 address=127.0.0.1 connectionTimeout=2 
 redirectPort=443/

  Connector port=443 protocol=HTTP/1.1 address=127.0.0.1 
SSLEnabled=true
 reads=150 scheme=https secure=true
 clientAuth=false sslProtocol=TLS 
 keystoreFile=conf/testkeys
 keystorePass=test12/

  Engine name=Catalina defaultHost=localhost

 Host name=localhost  appBase=/public_html
   unpackWARs=true autoDeploy=true
   xmlValidation=false xmlNamespaceAware=false

Context path= docBase=/public_html
/Context

 /Host

  /Engine

   /Service

/Server


-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: How do I configure server.xml for Tomcat to recognize my application directory?

2008-11-18 Thread removeps-groups
Thanks to everyone.  I will try out these suggestions tonight and write back if 
they do not work.

In response to

 What is in your webapp's META-INF/context.xml file?  It
 should not have either the path or the docBase attributes
 set.

the file contents are as follows (note: no attributes in the Context element)

Context
   Realm .../Realm
   Resources ...//Resources
/Context



--- On Tue, 11/18/08, Caldarale, Charles R [EMAIL PROTECTED] wrote:

 From: Caldarale, Charles R [EMAIL PROTECTED]
 Subject: RE: How do I configure server.xml for Tomcat to recognize my  
 application directory?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, November 18, 2008, 9:52 AM
  From: [EMAIL PROTECTED]
 [mailto:[EMAIL PROTECTED]
  Subject: How do I configure server.xml for Tomcat to
  recognize my application directory?
 
  The application is in
  C:\public_html
 
 You should put the application in a directory underneath
 public_html, not in public_html.  If you want it to be the
 default webapp, make that directory name ROOT (case
 sensitive, even on Windows).
 
  The directory structure of the application is
 
 Move the files to:
 C:\public_html\ROOT\index.html
 C:\public_html\ROOT\WEB-INF\
 C:\public_html\ROOT\WEB-INF\web.xml
 C:\public_html\ROOT\META-INF
 C:\public_html\ROOT\META-INF\context.xml
 
  It seems the the problem might be the directory
 structure,
  and appBase, and docBase.
 
 Correct; keep reading.
 
  Host name=localhost 
 appBase=/public_html
unpackWARs=true
 autoDeploy=true
xmlValidation=false
 xmlNamespaceAware=false
 
 The above is mostly o.k.; appBase specifies the directory
 under which each webapp is deployed.  However, I would make
 it C:/public_html, just in case you're in a
 different drive letter when Tomcat is started.
 
  Context path=
 docBase=/public_html
  /Context
 
 This is bad.  The docBase attribute must *never* be the
 same as appBase, and you should not be placing
 Context elements in server.xml these days.  Just
 remove the entire Context element, since it's
 not needed.
 
 What is in your webapp's META-INF/context.xml file?  It
 should not have either the path or the docBase attributes
 set.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
 OTHERWISE PROPRIETARY MATERIAL and is thus for use only by
 the intended recipient. If you received this in error,
 please contact the sender and delete the e-mail and its
 attachments from all computers.
 
 -
 To start a new topic, e-mail: users@tomcat.apache.org
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]

-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Tomcat vs Daemons

2008-11-18 Thread removeps-groups
In my code, I have a ServletContextListener (configured in web.xml or similar 
file, don't remember exactly), so when the servlet context is created it calls 
contextInitialized(ServletContextEvent).  In this function I start the daemon 
threads.  There is a function contextDestroyed which you can use to stop the 
threads (but note Thread.stop is deprecated).

It sounds like a good idea to start these background threads in a new process.  
However, I don't know if you can do this in a hosted web server environment 
like the kind you find at mochahost.com and dailyrazor.com.  Will need to test 
it out.


--- On Tue, 11/18/08, Christopher Schultz [EMAIL PROTECTED] wrote:

 From: Christopher Schultz [EMAIL PROTECTED]
 Subject: Re: Tomcat vs Daemons
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, November 18, 2008, 1:35 PM
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Nathan,
 
 Nathan Thatcher wrote:
  I am porting an application from Windows to Linux
 which makes heavy use of
  servlets. I have a fairly intensive background process
 (currently a windows
  service) that requires no user interaction. I plan to
 rewrite the code in
  Java and I am wondering if there is any notable
 performance difference
  between running the Java code under Tomcat as opposed
 to running the code
  directly as a daemon.
 
 Not really, but I don't see a compelling reason to run
 something under a
 servlet container if it doesn't actually need to be
 running inside a
 servlet container. Is also simplifies testing, deployment,
 etc if you
 leave it separate.
 
  Since the application requires Tomcat, I know I can
  code it up as a servlet and kick off the processing in
 the init() function
  and not worry about executing the code directly as a
 daemon.
 
 While this certainly will work (I'm assuming you're
 kicking-off a thread
 to do this work), it's a pretty big hack ;)
 
  Since this is a
  performance sensitive process I want to make sure that
 I choose the optimal
  route.
 
 So, you want to make sure that the process itself gets
 enough CPU time?
 I think you want to be able to control this process
 separately from your
 webapps. *NIX has finer-grained levels of process priority
 than
 Microsoft Windows does (at least, those that are exposed to
 the user),
 and you can use the program nice to run a job
 with higher or lower
 priority (note there is no mean command... you
 just use a negative
 niceness value).
 
  Does anybody know how java code running as a servlet
 compares
  performance-wise to the same code running as a daemon?
 Is one way generally
  better than the other?
 
 Once your code starts up, there should be no performance
 difference
 since you're not adding any overhead from the container
 (that is, you
 don't have to use any of their classes or objects or
 anything). The only
 problem is that it's running in the same JVM as the
 actual servlets in
 your application.
 
 I'd keep it as a separate application if I were you.
 
 - -chris
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (MingW32)
 Comment: Using GnuPG with Mozilla -
 http://enigmail.mozdev.org
 
 iEYEARECAAYFAkkjNTsACgkQ9CaO5/Lv0PBEogCfVE3yTS6SV/BSpK810P2XYtW/
 HX8AoMKeCUSOK2tlDLHdVWLzGRtCUZaI
 =Q41d
 -END PGP SIGNATURE-
 
 -
 To start a new topic, e-mail: users@tomcat.apache.org
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail:
 [EMAIL PROTECTED]

-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: How do I configure server.xml for Tomcat to recognize my application directory?

2008-11-18 Thread removeps-groups
The suggestion works.  However, many of the log files are gone.  There used to 
be in the ${catalina.home}/logs folder files such as

catalina...log
admin...log
host-manager...log
etc

Now there is only

jakarta_service...log
stderr...log
stdout...log

I tried creating a folder log at the same level as public_html -- ie. c:\log -- 
but it did not work.

Incidentally, my log4j.properties specifies the log file as logs/MyFile.log, 
and that file is created in the ${catalina.home} folder.


--- On Tue, 11/18/08, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:

 From: [EMAIL PROTECTED] [EMAIL PROTECTED]
 Subject: RE: How do I configure server.xml for Tomcat to recognize my  
 application directory?
 To: Tomcat Users List users@tomcat.apache.org
 Date: Tuesday, November 18, 2008, 11:11 AM
 Thanks to everyone.  I will try out these suggestions
 tonight and write back if they do not work.
 
 In response to
 
  What is in your webapp's META-INF/context.xml
 file?  It
  should not have either the path or the docBase
 attributes
  set.
 
 the file contents are as follows (note: no attributes in
 the Context element)
 
 Context
Realm .../Realm
Resources ...//Resources
 /Context
 
 
 
 --- On Tue, 11/18/08, Caldarale, Charles R
 [EMAIL PROTECTED] wrote:
 
  From: Caldarale, Charles R
 [EMAIL PROTECTED]
  Subject: RE: How do I configure server.xml for Tomcat
 to recognize my  application directory?
  To: Tomcat Users List
 users@tomcat.apache.org
  Date: Tuesday, November 18, 2008, 9:52 AM
   From: [EMAIL PROTECTED]
  [mailto:[EMAIL PROTECTED]
   Subject: How do I configure server.xml for Tomcat
 to
   recognize my application directory?
  
   The application is in
   C:\public_html
  
  You should put the application in a directory
 underneath
  public_html, not in public_html.  If you want it to be
 the
  default webapp, make that directory name ROOT (case
  sensitive, even on Windows).
  
   The directory structure of the application is
  
  Move the files to:
  C:\public_html\ROOT\index.html
  C:\public_html\ROOT\WEB-INF\
  C:\public_html\ROOT\WEB-INF\web.xml
  C:\public_html\ROOT\META-INF
 
 C:\public_html\ROOT\META-INF\context.xml
  
   It seems the the problem might be the directory
  structure,
   and appBase, and docBase.
  
  Correct; keep reading.
  
   Host name=localhost 
  appBase=/public_html
 unpackWARs=true
  autoDeploy=true
 xmlValidation=false
  xmlNamespaceAware=false
  
  The above is mostly o.k.; appBase specifies the
 directory
  under which each webapp is deployed.  However, I would
 make
  it C:/public_html, just in case you're
 in a
  different drive letter when Tomcat is started.
  
   Context path=
  docBase=/public_html
   /Context
  
  This is bad.  The docBase attribute must *never* be
 the
  same as appBase, and you should not be placing
  Context elements in server.xml these days. 
 Just
  remove the entire Context element, since
 it's
  not needed.
  
  What is in your webapp's META-INF/context.xml
 file?  It
  should not have either the path or the docBase
 attributes
  set.
  
   - Chuck
  
  
  THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR
  OTHERWISE PROPRIETARY MATERIAL and is thus for use
 only by
  the intended recipient. If you received this in error,
  please contact the sender and delete the e-mail and
 its
  attachments from all computers.
  
 
 -
  To start a new topic, e-mail: users@tomcat.apache.org
  To unsubscribe, e-mail:
 [EMAIL PROTECTED]
  For additional commands, e-mail:
  [EMAIL PROTECTED]

-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]