Re: Apache/mod_jk serves random files from tomcat
-- Jakob Ericsson +46 704 533 627 11 nov 2008 kl. 22.37 skrev Christopher Schultz [EMAIL PROTECTED] : -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Jakob, Jakob Ericsson wrote: We are also experiencing this problem. Our setup is running Windows 2003 Server with Apache 2.0.59 (no prefork), mod_jk 1.2.22 and Apache Tomcat/6.0.13. Will upgrading to latest mod_proxy_ajp in Apache httpd 2.2.X solve this problem? If you're willing to donate some time to this, please stick with mod_jk and work with Rainer/Mladen to fix whatever might be wrong. Upgrading to the latest mod_jk is a definite requirement before you continue testing. We are in the process of updating our system to the latest mod_jk. I will give an update if this solves our problem. The underlying problem is hopefully the missed multi thread flag in mod_jk compile. Does anyone know which issue this is in bugzilla? Switching to mod_proxy_ajp will switch your configuration around and you'll be using a different package. In that case, your problem may go away (yay!) but the underlying problem might not get fixed (boo!). - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkZ+yIACgkQ9CaO5/Lv0PCUOQCdHZZH9Fzgjg+brfipzDiSv9KN qdwAnid9AjHkKA0h+VZRZdxNGAB8xSuy =T/6T -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: Using JAXB with tomcat
I am not sure if this works and it is probably not a nice solution, but maybe you can do something like BoOcorrenciaPolicial bo = (BoOcorrenciaPolicial) unmarshaller.unmarshal(new File(XML_DIR + id + .xml)); Class clazz = bo.getClass(); Field field = clazz.getDeclaredField(hist); field.setAccessible(true); String hist = bo.getHist(); Like that you would at least not have to change the fields from protected to public. Torsten -Original Message- From: Rafael Cunha de Almeida [mailto:[EMAIL PROTECTED] Sent: 12. november 2008 08:40 To: users@tomcat.apache.org Subject: Using JAXB with tomcat I have been trying to use JAXB with tomcat, but I have been have some problems. I began trying to use the following class loader: this.getClass().getClassLoader() That didn't work. I don't actually understand much about those class loader things. So I browsed the Internet for a solution and I found out the following line: Thread.currentThread().getContextClassLoader() Then I plugged it into my JAXB initialization (br/sids/brh/jaxb is in WEB-INF/class): JAXBContext jc = JAXBContext.newInstance(br.sids.brh.jaxb, Thread.currentThread().getContextClassLoader()); unmarshaller = jc.createUnmarshaller(); After some tomcat permissions tweaking I finally get that line working. I was happy for a while, that is until I tried to actually get some information from the XML. I used the following, very simple, just to test it: BoOcorrenciaPolicial bo = (BoOcorrenciaPolicial) unmarshaller.unmarshal(new File(XML_DIR + id + .xml)); String hist = bo.getHIST(); Things didn't go as smoothly as I'd hope. This is the error I got: java.lang.IllegalAccessError: Class com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection can not access a member of class br.sids.brh.jaxb.BoOcorrenciaPolicial with modifiers protected com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:204) I noticed that protected modifiers seemed to be bothering tomcat. So I thought I'd edit br/sids/brh/jaxb/BoOcorrenciaPolicial.java and change all the occurences to public. That seems to have done it. Even %= hist % worked as expected. I was pleased, but I didn't like the solution. That file is automatically generated, it seems rather bad to me to edit a automatically generated file like that. I'd have to notice any future user that he has to do that (or call some script I could make) and overall it doesn't seems really elegant to simple change protected to public, whoever made the program probably had a reason to keep those methods protected. Does anyone have a better solution? Maybe some further tomcat configuration, the user of a different loader, perhaps. - 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]
Tomcat 6 startup error
Hi All, I am getting the following error when I try to start Tomcat 6. I am new to Tomcat. Nov 12, 2008 12:31:12 PM org.apache.catalina.startup.Bootstrap initClassLoaders SEVERE: Class loader creation threw exception java.io.IOException: Invalid argument at java.io.WinNTFileSystem.canonicalize0(Native Method) at java.io.Win32FileSystem.canonicalize(Unknown Source) at java.io.File.getCanonicalPath(Unknown Source) at org.apache.catalina.startup.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:200) at org.apache.catalina.startup.Bootstrap.createClassLoader(Bootstrap.java:173) at org.apache.catalina.startup.Bootstrap.initClassLoaders(Bootstrap.java:91) at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:206) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:390) What could be the issue? Please let me know ASAP. --Raj -- View this message in context: http://www.nabble.com/Tomcat-6-startup-error-tp20455940p20455940.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]
Re: Forward filter mapping including path info
Hi Mark, Mark Thomas schrieb: Florian Hopf wrote: Is a mapping containing a path info not supported for forwards? Looks like https://issues.apache.org/bugzilla/show_bug.cgi?id=45441 This is fixed in 6.0.x trunk if you want to try that or wait for 6.0.19. Thank's a lot, that's it. We will see if we can update when 6.0.19 is out. Also thanks to Christopher for trying to help. Regards Florian - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Session replication for JPetStore application in tomcat 6
Hello All , I am a newbie to the Tomcat and Tomcat clustering environment .I was just going through some posts on this forum for reference . I wish to deploy the classic JPetStore application which comes with the Spring framework in the clustered environment involving 2 machines for session replication For this, I installed Apache 2.2 , Tomcat 6.0.18 and mod_jk on each of these machines . I configured mod_jk load balancer for sticky session and deployed JPetStore on either of them . But once I start tomcat and apache on either machine and try to do some transactions , I cannot see any sessions being exchanged between the two members of the cluster. The JPetStore application also uses a database (hsqldb) and its necessary to start one on either machine (it is not a shared one). I was reading some documentation regarding if the session attributes are to be implemented from serializable interface...but I see they already have been in the source code . I will be greateful if anyone could help me out and give a good insight on where I am going wrong ? I have attached the server.xml , workers.properties and catalina.out for the two nodes in the attached file. Any help is deeply appreciated ! Best Regards !! Anupam http://www.nabble.com/file/p20456399/clustering_files.rar clustering_files.rar -- View this message in context: http://www.nabble.com/Session-replication-for-JPetStore-application-in-tomcat-6-tp20456399p20456399.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]
Re: Tomcat threads
Filip Hanik .. and many others - Dev Lists wrote: [...] Thanks for all the answers, very enlightening. In summary thus : - Tomcat (or rather I suppose the Connector) will create new threads as needed to service simultaneous requests, up to the number given in the Connector's maxThreads attributes. - Once such a thread is created, it remains alive after servicing the request for which it was created, and can thus service future requests - The memory usage one sees with top under some versions of Linux for each one of these threads is not really cumulative, because most of it is actually shared between the threads. The total really used is only slightly more than what is indicated individually for each thread. In other words, after the first thread is created, each additional thread only adds a relatively small overhead. Now let me elaborate one step further, and let me know if this is correct : If in a Tomcat I have one HTTP Connector and one AJP Connector (used with mod_jk), they are two distinct Connectors. (I don't really expect dissent here, but who knows ?) Each one will create new threads as needed to service requests on *that* Connector, independently of the other Connector. So if I access the same application (webapp) multiple times indifferently through one Connector or the other, this will result in two groups of threads, one group per Connector, each group behaving independently like indicated above in the summary. Right ? If right, then it means one would do better choosing if one can, and always access this application through either one of the Connectors, but not both, right ? Or, considering both groups are in the end executing the same webapp application, would the memory used by the two groups of threads end up being largely shared also anyway ? - 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 Native library for Windows
I never set JAVA_HOME globally, I configure it explicitly for each different Tomcat. In this particular instance I have set: set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_07 in setclasspath.bat, i.e. the 64bit jdk. CATALINA_HOME is set in startup.bat (set CATALINA_HOME=%CURRENT_DIR%) and is the path I'm running Tomcat from. It is always reported as correctly set in cmd prompt anyway. PATH I don't see how that could make a difference. I never use tomcat6.exe, tomcat6w.exe or the service to start up Tomcat, I always use startup.bat, which eventually starts Bootstrap class calling java (with the correct jdk) in catalina.bat: start Tomcat C:\Program Files\Java\jdk1.6.0_07\bin\java -Xdebug ... org.apache.catalina.startup.Bootstrap start Unless this somehow invokes tomcat6.exe, which I hope it doesn't. How can I tell if it's 64 bit or not? I have also tried with other browsers and here's what I've discovered: [IE] The webpage cannot be displayed Most likely cause: Some content or files on this webpage require a program that you don't have installed. What you can try: Search online for a program you can use to view this web content. Retype the address. Go back to the previous page. [Firefox] Connection Interrupted The document contains no data. The network link was interrupted while negotiating a connection. Please try again. [Chrome] This web page is not available. The web page at null might be temporarily down or it may have moved permanently to a new web address. More information on this error Below is the original error message Error 2 (net::ERR_FAILED): Unknown error. [Opera] It works! [cURL] curl localhost:8080 It works! No proxy has been configured in any of the browsers used or Internet Options. Whenever I try to connect with putty raw it says almost immediately Connection closed by remote host. Serge Fonville wrote: I looked at your server.xml and compared it to mine. I see no difference that would cause this.I use tomcat 6.0.18 with JDK 5 Have you set all variables correctly JAVA_HOME,CATALINA_HOME,PATH Did you use the x64 tomca6.exe and tomcat6w.exe Have you tried other browsers (ie,opera,chrome,mozilla) you could also telnet to your tomcat server for http: GET / HTTP/1.1 host: localhost (two enters) On Fri, Nov 7, 2008 at 1:16 PM, zmeeagain [EMAIL PROTECTED] wrote: My server.xml: http://www.nabble.com/file/p20379495/server.xml server.xml Serge Fonville wrote: Could you post your server xml (excluding comments) since I have the same situation working fine. On Fri, Nov 7, 2008 at 11:51 AM, zmeeagain [EMAIL PROTECTED] wrote: What I failed to report is that, now that the AprLifecycleListener is initialised and the library is loaded, I can't access Tomcat anymore!!! Hitting localhost:8080 gives me (Firefox): Connection Interrupted The document contains no data. The network link was interrupted while negotiating a connection. Please try again. As soon as I remove tcnative-1.dll and restart Tomcat, everything is back to normal again. Is there something more I need to do? BTW, no errors appear in catalina log file. zmeeagain wrote: It's an Intel Core2 Duo E4500 at 2.2 GHz, running Vista Business 64 bit. Anyhow, your comment made think that ia64 is not my architecture. And indeed, version 1.1.14 of tcnative-1.dll is available for amd and x64 architectures (instead of amd and ia64 as in some previous versions). That last one did the trick or me: INFO: Loaded APR based Apache Tomcat Native library 1.1.14. 6 Nov 2008 11:09:10 am org.apache.catalina.core.AprLifecycleListener init INFO: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], random [true]. -- View this message in context: http://www.nabble.com/Tomcat-Native-library-for-Windows-tp19279526p20378334.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] -- View this message in context: http://www.nabble.com/Tomcat-Native-library-for-Windows-tp19279526p20379495.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] -- View this message in context: http://www.nabble.com/Tomcat-Native-library-for-Windows-tp19279526p20458413.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
Re: multiple Set-Cookie headers in initial http response
Our Tomcat 5.5 sends 30 cookie (cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; domain=null; path=/) Are they all identical? No. They are ALL different (and they also differ from response to response) and 900 Set-Cookie (header=Set-Cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; Path=/; Secure) headers in the http response header back to the external clients (during the initial http request/response). Same here: identical? No. Each of the 30 DIFFERENT session id's from above are repeated thirty times. The 900 Set-Cookie headers contain each cookie JSESSIONID thirty times. That is crazy! How are you observing this behavior? LiveHTTPHeaders/http protocol sniffer? Wireshark/packet sniffer? Yes it is crazy - I observed this using org.apache.catalina.valves.RequestDumperValve in my server.xml If I submit the same request from my machine I get a only/as expected one cookie and one Set-Cookie header back in the initial response. Er... what do you mean from my machine? What are you using when you get 900 Set-Cookie headers? My machine is my PC at work. The requests where a repsonse with 900 SetCookie headers is returned, are sent from PC's of our partners, which operate in one single network (and thus all have the same IP, which is the IP of the partner network's proxy server). If I use some other PC connected to the internet I have the same expected behaviour as from my PC at work. So those responses are only/exclusively produced for requests coming from PC's of our partners. markus -- GMX Download-Spiele: Preizsturz! Alle Puzzle-Spiele Deluxe über 60% billiger. http://games.entertainment.gmx.net/de/entertainment/games/download/puzzle/index.html - 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 threads, II
David kerber wrote: Pid wrote: ... Having said that, parsing XML can be a memory intensive operation as well, so your old box could be experiencing problems there - check the garbage collection log. p I try to avoid XML for this exact reason. We found that our application could handle between 6 and 10 times more concurrent requests on the same hardware when we went away from XML data transmission, and switched to a simple text-based HTTP POST request. D Thank you all very much. But, as mentioned before, I have no choice about the XML. That's how the application works, and we don't have the code. We have already tried - because that is one thing we can do - to split the XML data into smaller chunks, but that does not seem to have any significant impact. We do really like the application though. So before I decide to junk it, we will make further tests on a better server. But my question now was, apart from the things I cannot change, what could I try changing on the current test server, to see if it makes any difference ? Should I give more/less meory to Tomcat or Java, and if yes how ? Can I tell Tomcat/Java to start this application, but use only some maximum percentage of the memory/cpu time while doing so ? I also do not know where to look for the garbage collection log. Hints anyone ? And what should I look for in there ? Is there any way, from the outside of the application, that I can check what exactly the application is busy doing, when it is starting up ? - 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 threads
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 André, André Warnier wrote: - The memory usage one sees with top under some versions of Linux for each one of these threads is not really cumulative, because most of it is actually shared between the threads. The total really used is only slightly more than what is indicated individually for each thread. In other words, after the first thread is created, each additional thread only adds a relatively small overhead. Actually, it gets better than that if you have multiple 1.5+ JVMs running on the same machine (*NIX /or/ Windows), since recent JVMs use shared memory to share common class data (like JITed object code from java.* packages). So, the OS helps share data between JVMs if you have several of them running. Now let me elaborate one step further, and let me know if this is correct : If in a Tomcat I have one HTTP Connector and one AJP Connector (used with mod_jk), they are two distinct Connectors. (I don't really expect dissent here, but who knows ?) Each one will create new threads as needed to service requests on *that* Connector, independently of the other Connector. Yup. So if I access the same application (webapp) multiple times indifferently through one Connector or the other, this will result in two groups of threads, one group per Connector, each group behaving independently like indicated above in the summary. Right ? Yes. If right, then it means one would do better choosing if one can, and always access this application through either one of the Connectors, but not both, right ? Mmm maybe. I would argue that memory and thread count aren't the proper reasons for picking just one connector and sticking with it, but I round recommend that configuration anyway: why bother with AJP when HTTP is working for you? Or, if you are using AJP for some stuff, why add the (likely) headache of exposing HTTP as well? Or, considering both groups are in the end executing the same webapp application, would the memory used by the two groups of threads end up being largely shared also anyway ? Yes, the memory is shared. It doesn't matter where the Thread objects came from, they all have the same heap. Even if they are serving /different/ applications, it doesn't matter (because threads are not app-specific). About the only thing they don't share (as Chuck mentioned) is their stack and some small amount of private memory (probably around 1MB or less). - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkka5F4ACgkQ9CaO5/Lv0PCLoACgtr38cgXLuu+Iblt/ncgxyOrj j+wAnij16HJOEzZcGVa+8aGMpeNNlR8T =PIGx -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]
Re: Tomcat Performance
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Leon, Leon Rosenberg wrote: On Wed, Nov 12, 2008 at 2:26 PM, David kerber [EMAIL PROTECTED] wrote: Peng Tuck Kwok wrote: Probably the reason why he's seeing one instance of tomcat moving quicker than 2 instances is the fact that there is some form of contention for resources on that single machine assuming that the 2 instances are configured identically in every aspect (other than ports). You mis-read it. He's seeing twice the performance from two instances than he is one single one, which shouldn't be if the one is properly configured, Or if the application has synchronization/blocking issues. Yup: like a small db connection pool in a db-heavy application. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkka5O8ACgkQ9CaO5/Lv0PDkswCglLVGkzzNNDbGKZg5QCQbVPF2 5/cAnRe3DqIcxphv+D5PqGbtdgl3PQUb =PccR -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]
Re: Tomcat Performance
David, was replying to Charles's earlier email on that. I thought I read it right first in the email and assumed Charles was correct in that. Hazards of reading mail on the go :P On Wed, Nov 12, 2008 at 9:26 PM, David kerber [EMAIL PROTECTED] wrote: Peng Tuck Kwok wrote: Probably the reason why he's seeing one instance of tomcat moving quicker than 2 instances is the fact that there is some form of contention for resources on that single machine assuming that the 2 instances are configured identically in every aspect (other than ports). You mis-read it. He's seeing twice the performance from two instances than he is one single one, which shouldn't be if the one is properly configured, (with the exception noted below). D The idea is not to give you a 0-60 mph capability with 2 tomcats on a single box (partition) but to give you better throughput. As I understand it, when you start getting more load, you'd be able to handle the requests in a linear fashion (again assuming you've sized the 2 or more instances correctly). *I would rarely recommend that a client run parallel app servers on the same machine for the same application for any purposes other than being able to switch between versions of the same application (say, for zero-downtime upgrade strategy). *I wouldn't recommend anyone do that just to switch versions for a zero downtime upgrade strategy as well. Some sort of DR would be better for this ? Down production and switch to DR then when upgrades are complete just reverse what has been done. *Since the OP didn't say that's what his requirements were, there doesn't seem to be a compelling reason to use this strategy. *You're right, until we really know what his requirements/KPI's on that are then most of this is largely academic. Nishi, the link to the redbook is here http://www.redbooks.ibm.com/abstracts/sg246392.html?Open . It's websphere specific, but there's still lot of things you can pick up on and probably apply. On Wed, Nov 12, 2008 at 5:15 AM, Christopher Schultz [EMAIL PROTECTED] wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Pengtuck, [EMAIL PROTECTED] wrote: So let me get this straight. You are reluctant to accept a configuration which gives you improved throughput ? :P No, the OP is unwilling to use a configuration that doesn't make any sense: one single Tomcat should outperform two Tomcats on the same physical server (unless you are talking about a 32-bit JVM that needs a lot of memory). Anyway, this is not an unusual approach, from what I understand this simply makes full use of the resources available on that machine. Not uncommon in real world to see app servers like websphere being configured in that manner. I would rarely recommend that a client run parallel app servers on the same machine for the same application for any purposes other than being able to switch between versions of the same application (say, for zero-downtime upgrade strategy). Since the OP didn't say that's what his requirements were, there doesn't seem to be a compelling reason to use this strategy. - -chris - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Problem install APR Tomcat Native Library on Centos 5.2
Hi all, We are trying to get APR to work. Sofar without success. tThe APR libraries are build, are readable for the world, but tomcat seems unable to find them. INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/ server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/home/belpop/tomcat//lib:/usr/local/apr/lib/:/usr/local/apr/:/usr/java/packages/lib/i386:/lib:/usr/lib The LD_LIBRARY_PATH is set correctly, LD_LIBRARY_PATH=$CATALINA_HOME/lib:/usr/local/apr/lib:/usr/local/apr export LD_LIBRARY_PATH What am I doing wrong? If you do not have a direct answer, Like Torsten suggested - Is it possible to get Tomcat to log some more details about loading these libs? Could be interesting to see some UnsatisfiedLinkError or so. Thanks in advance Paul van Beukering apr: apr-1.3.3 tomcat version: 6.0.18 tomcat-native-1.1.14-src
Re: Tomcat threads
Christopher Schultz wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 André, André Warnier wrote: - The memory usage one sees with top under some versions of Linux for each one of these threads is not really cumulative, because most of it is actually shared between the threads. The total really used is only slightly more than what is indicated individually for each thread. In other words, after the first thread is created, each additional thread only adds a relatively small overhead. Actually, it gets better than that if you have multiple 1.5+ JVMs running on the same machine (*NIX /or/ Windows), since recent JVMs use shared memory to share common class data (like JITed object code from java.* packages). So, the OS helps share data between JVMs if you have several of them running. So, let me check if I get this correctly. Suppose for some reason I would have two independent Tomcat instances running on the same host, using the same JVM 1.5+, sharing a common CATALINA_HOME, running basically the same applications, but having each an individual CATALINA_BASE, then : - they would actually share (in memory) the compiled classes that are part of the standard Java library (java.* etc..) - they would also share (in memory) the classes that are loaded from some area under the CATALINA_HOME (I suppose most of the Tomcat-specific classes) - they would not share the classes that are loaded from under their individual CATALINA_BASE And is the fat that 2 classes are the same and can be shared dependent of where they are loaded from in terms of path, or does Java/Tomcat have a way to figure out that they are the same otherwise ? Elaborate. .. a bit, please. - 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 threads
From: Christopher Schultz [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads recent JVMs use shared memory to share common class data (like JITed object code from java.* packages) Careful - JITed code is *not* shared - only some of the PermGen is, and that only on a -client JVM. When running -server mode, nothing is shared across JVMs (that may change in Java SE 7 - haven't checked yet). The PermGen contains loaded classes, but not JIT-generated code. Each one will create new threads as needed to service requests on *that* Connector, independently of the other Connector. Correct. If you want a shared pool of threads, use an Executor, which Filip stated not to be a performance problem any more. Mmm maybe. I would argue that memory and thread count aren't the proper reasons for picking just one connector and sticking with it Agreed; an idle thread consumes very little resources. - 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]
RE: Tomcat threads
From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads - they would actually share (in memory) the compiled classes that are part of the standard Java library (java.* etc..) No - see my previous post. You can use JConsole to see which memory pools are shared (none on -server JVMs). - they would also share (in memory) the classes that are loaded from some area under the CATALINA_HOME (I suppose most of the Tomcat-specific classes) I haven't checked, but I suspect only classes loaded by the bootstrap class loader (e.g., from jre/lib) are shared, not any application classes. So, no. - 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]
Re: Problem install APR Tomcat Native Library on Centos 5.2
Paul van Beukering wrote: Hi all, We are trying to get APR to work. Sofar without success. tThe APR libraries are build, are readable for the world, but tomcat seems unable to find them. INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/ server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/home/belpop/tomcat//lib:/usr/local/apr/lib/:/usr/local/apr/:/usr/java/packages/lib/i386:/lib:/usr/lib The LD_LIBRARY_PATH is set correctly, LD_LIBRARY_PATH=$CATALINA_HOME/lib:/usr/local/apr/lib:/usr/local/apr export LD_LIBRARY_PATH What am I doing wrong? Where is libtcnative-1.so installed? It has to be in the LD_LIBRARY_PATH as well You can setup the LD_LIBRARY_PATH in console and just hit 'ldd libtcnative-1.so' No missing links should be reported. Regards -- ^(TM) - 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: Problem install APR Tomcat Native Library on Centos 5.2
Hello, You should copy libtcnative-1.so to java JDK installation folder in my case: jre/lib/amd64/ Those libraries are needed by java... Greetings Paul van Beukering wrote: Hi all, We are trying to get APR to work. Sofar without success. tThe APR libraries are build, are readable for the world, but tomcat seems unable to find them. INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/ server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/home/belpop/tomcat//lib:/usr/local/apr/lib/:/usr/local/apr/:/usr/java/packages/lib/i386:/lib:/usr/lib The LD_LIBRARY_PATH is set correctly, LD_LIBRARY_PATH=$CATALINA_HOME/lib:/usr/local/apr/lib:/usr/local/apr export LD_LIBRARY_PATH What am I doing wrong? If you do not have a direct answer, Like Torsten suggested - Is it possible to get Tomcat to log some more details about loading these libs? Could be interesting to see some UnsatisfiedLinkError or so. Thanks in advance Paul van Beukering apr: apr-1.3.3 tomcat version: 6.0.18 tomcat-native-1.1.14-src - 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 threads, II
From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads, II We have already tried - because that is one thing we can do - to split the XML data into smaller chunks, but that does not seem to have any significant impact. Nor would I expect it to. The total amount of memory consumed is going to be about the same, regardless of whether or not you split it up. From the numbers you posted before, it doesn't look like memory is the issue - you're maxing out the CPU. Parsing XML is very CPU intensive, and you simply don't have enough cycles to get it done in a reasonable amount of time. If you can run on a multi-CPU system and figure out how to process pieces of the XML file in parallel, that would help. Should I give more/less meory to Tomcat or Java, and if yes how ? Use JConsole to see what's going on while the webapp is initializing. Can I tell Tomcat/Java to start this application, but use only some maximum percentage of the memory/cpu time while doing so ? No. You can only limit memory by the -Xmx setting. I also do not know where to look for the garbage collection log. Likely because you didn't ask for one. Turn on -verbose:gc, and set -Xloggc:file to specify the GC logging location. However, I'd use JConsole first - it's easier. Is there any way, from the outside of the application, that I can check what exactly the application is busy doing, when it is starting up ? Again, use JConsole, or turn on JVM profiling (I'd recommend the former). - 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]
Re: log POST data
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Markus, Markus Reis wrote: I fear you are right :-) Due to the fact that you cannot read twice from the same ServletInputStream (unfortunately you are again right here :-)) I did the following in the mean time: Is this just a draft? Or do you have it running anywhere? The above code reads the ServletInputStream into a byte buffer and hands on a ByteArrayInputStream from this buffer to my application (which in turn reads from the ByteArrayInputStream and does not attempt to read the initial ServletInputStream twice/again). This is the proper strategy, but in order to put it into your Valve (or, hack the ExtendedAccessLogValve), you'll need to wrap the Request object in your own, new object that returns this ByteArrayInputStream to the caller when request.getInputStream is called. You also have to serve the same underlying object when getReader is called. Maybe something like this: public BufferedReader getReader() throws IOException { String encoding = getCharacterEncoding(); if(null == encoding) encoding = org.apache.coyote.Constants.DEFAULT_CHARACTER_ENCODING; return new BufferedReader(new InputStreamReader(getInputStream(), encoding)); } You'll need to implement a subclass of java/org/apache/catalina/connector/Request.java (or maybe the other Request.java in the TC source... easy to figure this out) and wrap the existing Request with your new request object before you hand-off control to the valve chain. Unfortunately, Tomcat doesn't provide ready-made Request objects for wrapping (like HttpServletRequestRrapper), but I've created some and attached them to a bugzilla report (https://issues.apache.org/bugzilla/show_bug.cgi?id=45014). Feel free to use them yourself. Also note that your InputStream actually needs to be a ServletInputStream, so you'll have to work around that some way ;) - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkka6WkACgkQ9CaO5/Lv0PChTgCeLFLZ59uzZ7m7bCMaKbFq1vw2 blwAn2O8whFxXUNPriA9MNsn681/4WPh =33D4 -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]
RE: Tomcat threads, II
From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Tomcat threads, II -classpath :/usr/lib/jvm/java-1.5.0-sun/jre//lib/jcert.jar: /usr/lib/jvm/java-1.5.0-sun/jre//lib/jnet.jar: /usr/lib/jvm/java-1.5.0-sun/jre//lib/jsse.jar: /usr/share/tomcat5.5/bin/bootstrap.jar: /usr/share/tomcat5.5/bin/commons-logging-api.jar The classpath above is very wrong: no jars from jre/lib should *ever* be on the classpath. Those jars are already on the JVM's bootclasspath and will at best be ignored anywhere else. Their presence will at a minimum slow down Tomcat initialization. Also, the commons-logging-api.jar should not be on the classpath; Tomcat finds that all by itself, based on entries in the bootstrap.jar manifest. If you need commons-logging for a webapp, it should be in the webapp's WEB-INF/lib directory, not on classpath. Finally, the leading colon on the classpath shouldn't be there, but it appears to do little harm. -Djava.security.manager Enabling the security manager slows things down; do you really need 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 start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
How to set JAVA_OPTS variable in tomcat6.0.16
Hi, I want to set Xms1024m Xmx1024m and MaxPermSize paramater to 128 How do I do that in tomcat6.0.16 thanks
Re: Problem install APR Tomcat Native Library on Centos 5.2
Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/usr/local/apr:/usr/java/packages/lib/i386:/lib:/usr/lib So, in LD_LIBRARY_PATH there should be the libtcnative-1.a files? What do you mean with: as well as all dependencies apr, eventual openssl, etc cheers, Paul On Wed, Nov 12, 2008 at 4:05 PM, Mladen Turk [EMAIL PROTECTED] wrote: Milan Cvejic wrote: Hello, You should copy libtcnative-1.so to java JDK installation folder in my case: jre/lib/amd64/ Those libraries are needed by java... There's no need for that. It is enough that it is (as well as all dependencies apr, eventual openssl, etc) in the LD_LIBRARY_PATH Regards -- ^(TM) - 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 Performance
From: Peng Tuck Kwok [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat Performance David, was replying to Charles's earlier email on that. I thought I read it right first in the email and assumed Charles was correct in that. Assuming you're referring to me, I have not commented on this thread prior to this message. (There's insufficient real information to comment about.) - 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]
Re: Problem install APR Tomcat Native Library on Centos 5.2
Paul van Beukering wrote: Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. OK, if they are in the LD_LIBRARY_PATH what is the output from ldd libtcnative-1.so Regards -- ^(TM) - 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: Session replication for JPetStore application in tomcat 6
looks like its working, what is it that you don't think is working or would like help with? 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions ATTENTION: Manager [localhost#/jpetstore], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{-84, 17, 4, 14}:4000,{-84, 17, 4, 14},4000, alive=276200,id={44 8 -106 78 -12 88 70 -91 -126 47 21 -83 -67 102 67 -94 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds. 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions INFO: Manager [localhost#/jpetstore]; session state send at 06/11/08 17:08 received in 112 ms. Filip Anupam Beri wrote: Hello All , I am a newbie to the Tomcat and Tomcat clustering environment .I was just going through some posts on this forum for reference . I wish to deploy the classic JPetStore application which comes with the Spring framework in the clustered environment involving 2 machines for session replication For this, I installed Apache 2.2 , Tomcat 6.0.18 and mod_jk on each of these machines . I configured mod_jk load balancer for sticky session and deployed JPetStore on either of them . But once I start tomcat and apache on either machine and try to do some transactions , I cannot see any sessions being exchanged between the two members of the cluster. The JPetStore application also uses a database (hsqldb) and its necessary to start one on either machine (it is not a shared one). I was reading some documentation regarding if the session attributes are to be implemented from serializable interface...but I see they already have been in the source code . I will be greateful if anyone could help me out and give a good insight on where I am going wrong ? I have attached the server.xml , workers.properties and catalina.out for the two nodes in the attached file. Any help is deeply appreciated ! Best Regards !! Anupam http://www.nabble.com/file/p20456399/clustering_files.rar clustering_files.rar - 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: Problem install APR Tomcat Native Library on Centos 5.2
Milan Cvejic wrote: Hello, You should copy libtcnative-1.so to java JDK installation folder in my case: jre/lib/amd64/ Those libraries are needed by java... There's no need for that. It is enough that it is (as well as all dependencies apr, eventual openssl, etc) in the LD_LIBRARY_PATH Regards -- ^(TM) - 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: multiple Set-Cookie headers in initial http response
Markus Reis wrote: Our Tomcat 5.5 sends 30 cookie (cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; domain=null; path=/) Are they all identical? No. They are ALL different (and they also differ from response to response) and 900 Set-Cookie (header=Set-Cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; Path=/; Secure) headers in the http response header back to the external clients (during the initial http request/response). Same here: identical? No. Each of the 30 DIFFERENT session id's from above are repeated thirty times. The 900 Set-Cookie headers contain each cookie JSESSIONID thirty times. That is crazy! How are you observing this behavior? LiveHTTPHeaders/http protocol sniffer? Wireshark/packet sniffer? Yes it is crazy - I observed this using org.apache.catalina.valves.RequestDumperValve in my server.xml If I submit the same request from my machine I get a only/as expected one cookie and one Set-Cookie header back in the initial response. Er... what do you mean from my machine? What are you using when you get 900 Set-Cookie headers? My machine is my PC at work. The requests where a repsonse with 900 SetCookie headers is returned, are sent from PC's of our partners, which operate in one single network (and thus all have the same IP, which is the IP of the partner network's proxy server). If I use some other PC connected to the internet I have the same expected behaviour as from my PC at work. So those responses are only/exclusively produced for requests coming from PC's of our partners. markus Old African proverb : he who wants to eat an elephant, should do it a little bit at a time. I am not basing the following on any deep knowledge of Tomcat, just trying to use the logical cues from what you said so far and the way HTTP servers and browsers normally react. 1) How do you *precisely* know that Tomcat is actually sending 900 Set-Cookie Headers ? does the RequestDumperValve also dump the response ? or is that what you see in the client browser ? In other words, are you really sure that it is Tomcat who is sending all these Set-Cookie headers, or could it be the customer's proxy adding/multiplying them ? (Not that I would know how it could do that, but that's another matter) 2) The client browser gets 900 Set-Cookie headers, of which the basic set of different ones is 30, each multiplied 30 times. So the client browser ends up with 30 cookies set ? Or just one, in the end ? 3) Does this number 30 relate in some way to how many separate stations at your customer access your Tomcat server ? For example, assuming that there would be a way to reset everything, and then turn on a single customer station, and access your Tomcat server once, how many Set-cookies would that one browser get in return ? And then, what if a second station now sends a request ? - 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: Configuring tomcat to log authentication events
Brian Gillan schrieb: We're using Rational Team Concert with Tomcat and authenticating with LDAP. I want to log authentication events for users accessing RTC so we can see who's authenticating, and if unsuccessfully, who they're trying to authenticate as. Is this just a matter of configuration? I did some poking around the Tomcat documentation but nothing jumped out. If you are using Tomcat 6 and JULI logging (default), add org.apache.catalina.realm.level = FINEST org.apache.catalina.authenticator.level = FINEST to your $CATALINA_BASE/conf/logging.properties. Be aware of the wrong No role found message though: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/realm/RealmBase.java?r1=645149r2=698982sortby=datediff_format=h This will be fixed in 6.0.19. We are in the process of adding features to the JNDI Realm. Regards, Rainer - 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: multiple Set-Cookie headers in initial http response
Markus Reis wrote: [...] Further I found out that this happens only with an initial POST request - if I do the same via GET only one Set-Cookie header is returned (I wrote before that I was not able to reproduce those 900 Set-Cookie headers on my PC, but that was due to the fact that I sent the request as a GET - If I send the same data via a POST request I also get ~900 Set-Cookie headers, with the only difference that all of them always contain the exactly same JSESSIONID). I only get those 900 Set-Cookie headers after/at the initial request; Subsequent requests only have one cookie in http request and response header and look pretty normal. Well, that is a lot of progress. You have already eliminated all the client stations, the client network and the client proxy server. That's at least 50% of the elephant. Is there still something between your PC and the Tomcat server, or is your PC talking directly to the Tomcat server (no front-end server, no proxy, nothing like that ) ? And, how do you do this exactly, to switch between a GET request and a POST request ? And, can you try this in Firefox e.g., with the LiveHttpHeaders add-on, to see exactly at the PC level which headers are being sent, and which are being received, in each case ? - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Tomcat threads, II
Hi again. Now that I have (with your help) established some basic facts, I have a practical case for analysis. Before I get into details (because this is quite long), I'd like to explain the reason why I'm asking this. We have been testing a Tomcat application from a vendor. It works very nicely when it is started on a test system, and does what we expect. But the load it imposes on our test Tomcat at startup, makes me a bit insecure about deploying it to a production server, before I really understand what is happening. Not being a Java or Tomcat expert, I'm just trying to collect some pointers, to see if I can do something about what I am observing, or if that's it and we just have to live with it. The main thing is, I don't even know where to start, so I would appreciate some help, even if very basic. There is quite a bit of data below. We have an old clunker PC (Pentium II, 512 Mb Ram, average ATA disks), which we use to test some applications (not only Java/Tomcat). Its a Linux system, and runs this Tomcat : Using CATALINA_BASE: /usr/share/tomcat5.5 Using CATALINA_HOME: /usr/share/tomcat5.5 Using CATALINA_TMPDIR: /usr/share/tomcat5.5/temp Using JRE_HOME: /usr/lib/jvm/java-1.5.0-sun Server version: Apache Tomcat/5.5 Server built: Jan 20 2008 12:32:00 Server number: 5.5.20.0 OS Name:Linux OS Version: 2.6.18-6-686 Architecture: i386 JVM Version:1.5.0_14-b03 JVM Vendor: Sun Microsystems Inc. The full command used to start Tomcat is : /usr/lib/jvm/java-1.5.0-sun/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat5.5/conf/logging.properties -Djava.awt.headless=true -Xmx256M -server -Djava.endorsed.dirs=/usr/share/tomcat5.5/common/endorsed -classpath :/usr/lib/jvm/java-1.5.0-sun/jre//lib/jcert.jar:/usr/lib/jvm/java-1.5.0-sun/jre//lib/jnet.jar:/usr/lib/jvm/java-1.5.0-sun/jre//lib/jsse.jar:/usr/share/tomcat5.5/bin/bootstrap.jar:/usr/share/tomcat5.5/bin/commons-logging-api.jar -Djava.security.manager -Djava.security.policy==/var/lib/tomcat5.5/conf/catalina.policy -Dcatalina.base=/var/lib/tomcat5.5 -Dcatalina.home=/usr/share/tomcat5.5 -Djava.io.tmpdir=/var/lib/tomcat5.5/temp org.apache.catalina.startup.Bootstrap start Under Tomcat there, there is an application which we get from outside and of which we do not have the source. This application is loaded at Tomcat startup. When Tomcat has been running for a while, but the system and Tomcat are basically idle, a top with the option n (sort by memory usage), shows this (first few lines only) : top - 10:15:54 up 162 days, 16:25, 2 users, load average: 0.19, 0.09, 0.03 Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie Cpu(s): 2.0%us, 0.3%sy, 0.0%ni, 97.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem:516920k total, 509716k used, 7204k free,71992k buffers Swap: 1297564k total, 131340k used, 1166224k free,95148k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 6226 tomcat55 25 0 506m 191m 10m S 0.0 37.9 140:26.15 java 5937 root 22 0 267m 26m 8056 S 0.0 5.2 25:26.88 java 24608 root 23 0 260m 15m 9332 S 0.0 3.1 0:02.08 java 24638 root 15 0 29564 15m 5984 S 0.0 3.0 0:02.16 apache2 24627 efs 15 0 16964 12m 1968 S 0.0 2.6 0:06.68 MiraLoader.pl 24662 www-data 15 0 29564 10m 1632 S 0.0 2.2 0:02.91 apache2 24668 www-data 16 0 29564 10m 1624 S 0.0 2.2 0:02.50 apache2 24663 www-data 15 0 29564 10m 1620 S 0.0 2.2 0:02.78 apache2 etc.. (the other 2 java processes are separate java daemons, nothing to do with Tomcat). At this point Tomcat and this external application are very responsive, at least in single-user mode. We have not really done yet a multi-user test. Now, if I stop and restart Tomcat, for something like 6 minutes after that, the same top display shows this kind of thing : (There are 4 consecutive snapshots here, taken at more or less regular intervals during the 6 minutes) I) top - 12:44:56 up 162 days, 18:54, 3 users, load average: 0.99, 0.27, 0.08 Tasks: 85 total, 3 running, 82 sleeping, 0 stopped, 0 zombie Cpu(s): 98.0%us, 2.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem:516920k total, 351160k used, 165760k free,54548k buffers Swap: 1297564k total,7k used, 1227564k free, 128152k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 2864 tomcat55 25 0 463m 40m 11m R 97.9 7.9 0:25.62 java 5937 root 16 0 267m 24m 8056 S 0.0 4.9 25:38.84 java 24608 root 23 0 260m 15m 9332 S 0.0 3.1 0:02.17 java 24638 root 15 0 29564 15m 5984 S 0.0 3.0 0:02.16 apache2 24627 efs 15 0 16964 12m 1968 S 0.0 2.6 0:06.74 MiraLoader.pl 24664 www-data 15 0 29692 12m 3428 S 0.0 2.5 0:04.46 apache2 etc... II) top - 12:48:07 up 162 days, 18:57, 3 users, load average: 1.70,
Re: Best Linux JVM to use for Tomcat?
Well, I don't know about always. I have yet to find a 1.6 JDK from Sun that is even close to stable. With heavy use (especially heavy multithreaded use), we have found that all of the available 1.6 JDK's segfault. The latest JDK (1.6 update 10) is less than a month old - and it is a huge change set from the previous 1.6 release (1.6 update 7). I wouldn't even think about it for production given Sun's history of releasing crappy code. 1.6 update 10 should have been a major version change given the scope of changes (see - http://java.sun.com/javase/6/webnotes/ReleaseNotes.html ) We still use the latest 1.5 JVM / JDKs. Not that we want to. There is just nothing else out there that doesn't crash under our workload. - 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: Best Linux JVM to use for Tomcat?
On Wed, Nov 12, 2008 at 5:34 PM, Dan Armbrust [EMAIL PROTECTED] wrote: Well, I don't know about always. I have yet to find a 1.6 JDK from Sun that is even close to stable. With heavy use (especially heavy multithreaded use), we have found that all of the available 1.6 JDK's segfault. hmm, what kind of heavy use? We are using java version 1.6.0_05 for I think 6 Month now (since end of march 08) and we had not a single issue with it and found it better than 1.5. Considering that the whole 1.6 release was maintenance and performance release I would be surprised otherwise. It's actually first time I hear omeone complaining about 1.6 Java(TM) SE Runtime Environment (build 1.6.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode) Leon P.S. We are running about 70 VMs on about 20 machines with top services serving ~3000 requests per second and more with about 1000 threads. The latest JDK (1.6 update 10) is less than a month old - and it is a huge change set from the previous 1.6 release (1.6 update 7). I wouldn't even think about it for production given Sun's history of releasing crappy code. 1.6 update 10 should have been a major version change given the scope of changes (see - http://java.sun.com/javase/6/webnotes/ReleaseNotes.html ) We still use the latest 1.5 JVM / JDKs. Not that we want to. There is just nothing else out there that doesn't crash under our workload. - 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: Problem install APR Tomcat Native Library on Centos 5.2
Hi Mladen The output is: [EMAIL PROTECTED]:/home/belpop/tomcat/lib]$ ldd libtcnative-1.so libssl.so.6 = /lib64/libssl.so.6 (0x2affd1727000) libcrypto.so.6 = /lib64/libcrypto.so.6 (0x2affd197) libapr-1.so.0 = /usr/local/apr/lib/libapr-1.so.0 (0x2affd1cb8000) librt.so.1 = /lib64/librt.so.1 (0x2affd1ee2000) libcrypt.so.1 = /lib64/libcrypt.so.1 (0x2affd20eb000) libpthread.so.0 = /lib64/libpthread.so.0 (0x2affd2323000) libdl.so.2 = /lib64/libdl.so.2 (0x2affd253e000) libc.so.6 = /lib64/libc.so.6 (0x2affd2742000) libgssapi_krb5.so.2 = /usr/lib64/libgssapi_krb5.so.2 (0x2affd2a95000) libkrb5.so.3 = /usr/lib64/libkrb5.so.3 (0x2affd2cc4000) libcom_err.so.2 = /lib64/libcom_err.so.2 (0x2affd2f57000) libk5crypto.so.3 = /usr/lib64/libk5crypto.so.3 (0x2affd3159000) libz.so.1 = /usr/lib64/libz.so.1 (0x2affd337f000) /lib64/ld-linux-x86-64.so.2 (0x0034be40) libkrb5support.so.0 = /usr/lib64/libkrb5support.so.0 (0x2affd3593000) libkeyutils.so.1 = /lib64/libkeyutils.so.1 (0x2affd379c000) libresolv.so.2 = /lib64/libresolv.so.2 (0x2affd399e000) libselinux.so.1 = /lib64/libselinux.so.1 (0x2affd3bb3000) libsepol.so.1 = /lib64/libsepol.so.1 (0x2affd3dcc000) gr Paul On Wed, Nov 12, 2008 at 4:50 PM, Mladen Turk [EMAIL PROTECTED] wrote: Paul van Beukering wrote: Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. OK, if they are in the LD_LIBRARY_PATH what is the output from ldd libtcnative-1.so Regards -- ^(TM) - 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 6 startup error
From: rajesh202023 [mailto:[EMAIL PROTECTED] Subject: Tomcat 6 startup error I am getting the following error when I try to start Tomcat 6. What exact version of Tomcat? What JVM are you using? Which version of Windows are you using? Supplying adequate information and being precise will get you answers; asking for something ASAP will only annoy. If you want help ASAP, pay for 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 start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Problem install APR Tomcat Native Library on Centos 5.2
Try creating new file in /etc/ld.so.conf.d name it custom.conf or something.conf and add line /usr/local/apr/lib in that file. Then run ldconfig and try to restart tomcat. Paul van Beukering wrote: Hi Mladen The output is: [EMAIL PROTECTED]:/home/belpop/tomcat/lib]$ ldd libtcnative-1.so libssl.so.6 = /lib64/libssl.so.6 (0x2affd1727000) libcrypto.so.6 = /lib64/libcrypto.so.6 (0x2affd197) libapr-1.so.0 = /usr/local/apr/lib/libapr-1.so.0 (0x2affd1cb8000) librt.so.1 = /lib64/librt.so.1 (0x2affd1ee2000) libcrypt.so.1 = /lib64/libcrypt.so.1 (0x2affd20eb000) libpthread.so.0 = /lib64/libpthread.so.0 (0x2affd2323000) libdl.so.2 = /lib64/libdl.so.2 (0x2affd253e000) libc.so.6 = /lib64/libc.so.6 (0x2affd2742000) libgssapi_krb5.so.2 = /usr/lib64/libgssapi_krb5.so.2 (0x2affd2a95000) libkrb5.so.3 = /usr/lib64/libkrb5.so.3 (0x2affd2cc4000) libcom_err.so.2 = /lib64/libcom_err.so.2 (0x2affd2f57000) libk5crypto.so.3 = /usr/lib64/libk5crypto.so.3 (0x2affd3159000) libz.so.1 = /usr/lib64/libz.so.1 (0x2affd337f000) /lib64/ld-linux-x86-64.so.2 (0x0034be40) libkrb5support.so.0 = /usr/lib64/libkrb5support.so.0 (0x2affd3593000) libkeyutils.so.1 = /lib64/libkeyutils.so.1 (0x2affd379c000) libresolv.so.2 = /lib64/libresolv.so.2 (0x2affd399e000) libselinux.so.1 = /lib64/libselinux.so.1 (0x2affd3bb3000) libsepol.so.1 = /lib64/libsepol.so.1 (0x2affd3dcc000) gr Paul On Wed, Nov 12, 2008 at 4:50 PM, Mladen Turk [EMAIL PROTECTED] wrote: Paul van Beukering wrote: Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. OK, if they are in the LD_LIBRARY_PATH what is the output from ldd libtcnative-1.so Regards -- ^(TM) - 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: Session replication for JPetStore application in tomcat 6
Hello Filip, Thanks a lot for your reply. From the logs , the session state send is evident .The scenario i tried is as follows I opened the application web page on the first node via my browser , logged in , did some operations like some additions and modifications. I displayed the items in the cart . Then I opened the same application web page on the second node via browser and tried to display the items in the cart and it said that the Cart is empty . I had a few questions ... 1) how can I know if session replication is happening i.e any special debugging can be enabled in log4j ? (from above scenario , the items in the cart should be the same ? can this be the criteria ?) 2) Is it necessary to make the petstore database on each of nodes clustered for session replication to happen ? I wish to do some load testing too with jmeter to see how the load is distributed between workers. Any help will be greatefully appreciated ! Best Regards, Anupam Filip Hanik - Dev Lists wrote: looks like its working, what is it that you don't think is working or would like help with? 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions ATTENTION: Manager [localhost#/jpetstore], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{-84, 17, 4, 14}:4000,{-84, 17, 4, 14},4000, alive=276200,id={44 8 -106 78 -12 88 70 -91 -126 47 21 -83 -67 102 67 -94 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds. 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions INFO: Manager [localhost#/jpetstore]; session state send at 06/11/08 17:08 received in 112 ms. Filip Anupam Beri wrote: Hello All , I am a newbie to the Tomcat and Tomcat clustering environment .I was just going through some posts on this forum for reference . I wish to deploy the classic JPetStore application which comes with the Spring framework in the clustered environment involving 2 machines for session replication For this, I installed Apache 2.2 , Tomcat 6.0.18 and mod_jk on each of these machines . I configured mod_jk load balancer for sticky session and deployed JPetStore on either of them . But once I start tomcat and apache on either machine and try to do some transactions , I cannot see any sessions being exchanged between the two members of the cluster. The JPetStore application also uses a database (hsqldb) and its necessary to start one on either machine (it is not a shared one). I was reading some documentation regarding if the session attributes are to be implemented from serializable interface...but I see they already have been in the source code . I will be greateful if anyone could help me out and give a good insight on where I am going wrong ? I have attached the server.xml , workers.properties and catalina.out for the two nodes in the attached file. Any help is deeply appreciated ! Best Regards !! Anupam http://www.nabble.com/file/p20456399/clustering_files.rar clustering_files.rar - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- View this message in context: http://www.nabble.com/Session-replication-for-JPetStore-application-in-tomcat-6-tp20456399p20464726.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]
Re: tomcat 5.5 memory
Thanks you very much... 2008/11/12 Christopher Schultz [EMAIL PROTECTED]: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Alberto, Alberto Jesus La Rosa Agramonte wrote: [is ~25 Java processes normal for Tomcat?] Yes. Most UNIX/Linux variants display individual threads as processes. This means that you have around 25 threads within the JVM. What kernel version are you running? Recent Linux kernels do not show all these threads as processes, but rather show just the master process once. Try running ps with the '-f' (forest) switch which will show you relationships between processes. You'll see that there's a main process and many sub-processes which represent the threads. There's nothing to worry about, here: the threads don't really take up 7MB a piece. A lot of this memory is shared between the threads. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkaAk4ACgkQ9CaO5/Lv0PCmfgCgur8AjS2uzip+XukrpWWyaq1e TasAnjA+MHS+ERe3XGUfB2Sl5/05qdsT =IaPN -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: clustering
Apache is the load balancer??? 2008/11/12 Filip Hanik - Dev Lists [EMAIL PROTECTED]: you're missing the membership elelemnt Membership className=org.apache.catalina.cluster.mcast.McastService mcastAddr=228.0.0.4 mcastBindAddress=127.0.0.1 mcastClusterDomain=d10 mcastPort=45564 mcastFrequency=1000 mcastDropTime=3 recoveryCounter=10 recoveryEnabled=true recoverySleepTime=5000/ http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html John Coleman wrote: Hi, I am trying to set up load balancing and clustering, but whenever I put in a request to the lb server I get: java.lang.IllegalArgumentException: Required property mcastClusterDomain is missing. at org.apache.catalina.cluster.mcast.McastService.hasProperty(McastService. java:253) at org.apache.catalina.cluster.mcast.McastService.setProperties(McastServic e.java:141) at common.utilities.ServerUtil.isServerAlive(ServerUtil.java:36) at org.apache.webapp.balancer.rules.BaseLoadBalancingRule.isServerAlive(Bas eLoadBalancingRule.java:89) at org.apache.webapp.balancer.rules.RandomRedirectRule.matches(RandomRedire ctRule.java:41) at org.apache.webapp.balancer.RuleChain.evaluate(RuleChain.java:101) at org.apache.webapp.balancer.BalancerFilter.doFilter(BalancerFilter.java:1 19) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:108) at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(ReplicationValve .java:347) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1 51) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:87 4) I've looked at source code and config, and this property is always set! My server.xml files look like this: Server port=8005 shutdown=SHUTDOWN GlobalNamingResources 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 Service name=Catalina Connectorport=8009 enableLookups=false redirectPort=8443 debug=0 protocol=AJP/1.3/ Connector port=8080 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 debug=0 connectionTimeout=2 disableUploadTimeout=true / Enginename=Catalina defaultHost=localhost jvmRoute=node01 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase / Cluster className=org.apache.catalina.cluster.tcp.SimpleTcpCluster managerClassName=org.apache.catalina.cluster.session.DeltaManager expireSessionsOnShutdown=false useDirtyFlag=true Receiver className=org.apache.catalina.cluster.tcp.ReplicationListener tcpListenAddress=127.0.0.1 tcpListenPort=4000 tcpSelectorTimeout=100 tcpThreadCount=6/ Sender className=org.apache.catalina.cluster.tcp.ReplicationTransmitter replicationMode=pooled/ Valve className=org.apache.catalina.cluster.tcp.ReplicationValve filter=.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;/ /Cluster Host name=localhost appBase=webapps/ /Engine /Service /Server Has anyone cracked this error please? I have tried with 5.5-17 and 5.5-25 tomcats,
Re: Tomcat threads, II
Caldarale, Charles R wrote: From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Tomcat threads, II -Djava.security.manager Enabling the security manager slows things down; do you really need it? Not as far as I know. It was only the default setting on that system, from the (non-official) Tomcat5.5 Debian package. I have turned it off now, and restarted Tomcat, but it did not have any noticeable impact on the startup time. -classpath :/usr/lib/jvm/java-1.5.0-sun/jre//lib/jcert.jar: /usr/lib/jvm/java-1.5.0-sun/jre//lib/jnet.jar: /usr/lib/jvm/java-1.5.0-sun/jre//lib/jsse.jar: /usr/share/tomcat5.5/bin/bootstrap.jar: /usr/share/tomcat5.5/bin/commons-logging-api.jar The classpath above is very wrong: no jars from jre/lib should *ever* be on the classpath. Those jars are already on the JVM's bootclasspath and will at best be ignored anywhere else. Their presence will at a minimum slow down Tomcat initialization. Also, the commons-logging-api.jar should not be on the classpath; Tomcat finds that all by itself, based on entries in the bootstrap.jar manifest. If you need commons-logging for a webapp, it should be in the webapp's WEB-INF/lib directory, not on classpath. Finally, the leading colon on the classpath shouldn't be there, but it appears to do little harm. Now that is another story. As far as I can tell, these settings come from the catalina.sh script. I have no idea if this script is modified, compared to the Official version. It looks like it covers several platforms though, so I doubt that it is specifically from the Debian packager. I attach it for inspection. Now I'll try what you indicate above, gradually removing selected portions, tell you later what it does to my system. ... Well, it seems to have survived (apart from bootstrap.jar, which I had to leave), and now runs as tomcat55 8106 1 97 119903 196100 0 17:54 pts/200:04:56 /usr/lib/jvm/java-1.5.0-sun/bin/java -Djava.awt.headless=true -Xmx256M -server -Djava.endorsed.dirs=/usr/share/tomcat5.5/common/endorsed -classpath :/usr/share/tomcat5.5/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat5.5 -Dcatalina.home=/usr/share/tomcat5.5 -Djava.io.tmpdir=/var/lib/tomcat5.5/temp org.apache.catalina.startup.Bootstrap start But that did not apparently reduce its startup time much. If anything, it seems now to occupy more memory than before : PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 8106 tomcat55 25 0 485m 202m 12m S 0.0 40.1 6:22.38 java Against before : PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 2864 tomcat55 25 0 482m 188m 12m S 0.0 37.4 6:46.74 java Is there an explanation for that ? As far as I know, the same applications are loaded as last time. I also don't seem to be able to run JConsole. I am connecting to that system via a terminal-like SSH connection only. [EMAIL PROTECTED]:/usr/share/tomcat5.5/bin# jconsole Exception in thread AWT-EventQueue-0 java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159) etc... Is there a way around this ? #!/bin/sh # - # Start/Stop Script for the CATALINA Server # # Environment Variable Prequisites # # CATALINA_HOME May point at your Catalina build directory. # # CATALINA_BASE (Optional) Base directory for resolving dynamic portions # of a Catalina installation. If not present, resolves to # the same directory that CATALINA_HOME points to. # # CATALINA_OPTS (Optional) Java runtime options used when the start, # stop, or run command is executed. # # CATALINA_TMPDIR (Optional) Directory path location of temporary directory # the JVM should use (java.io.tmpdir). Defaults to # $CATALINA_BASE/temp. # # JAVA_HOME Must point at your Java Development Kit installation. # Required to run the with the debug or javac argument. # # JRE_HOMEMust point at your Java Development Kit installation. # Defaults to JAVA_HOME if empty. # # JAVA_OPTS (Optional) Java runtime options used when the start, # stop, or run command is executed. # # JPDA_TRANSPORT (Optional) JPDA transport used when the jpda start # command is executed. The default is dt_socket. # # JPDA_ADDRESS(Optional) Java runtime options used when the jpda start # command is executed. The default is 8000. # # JSSE_HOME (Optional) May point at your Java Secure Sockets Extension # (JSSE) installation, whose JAR files will be added to the # system class path used to start Tomcat. # # CATALINA_PID(Optional) Path of the file which should
Re: Tomcat Performance
Peng Tuck Kwok wrote: Probably the reason why he's seeing one instance of tomcat moving quicker than 2 instances is the fact that there is some form of contention for resources on that single machine assuming that the 2 instances are configured identically in every aspect (other than ports). You mis-read it. He's seeing twice the performance from two instances than he is one single one, which shouldn't be if the one is properly configured, (with the exception noted below). D The idea is not to give you a 0-60 mph capability with 2 tomcats on a single box (partition) but to give you better throughput. As I understand it, when you start getting more load, you'd be able to handle the requests in a linear fashion (again assuming you've sized the 2 or more instances correctly). *I would rarely recommend that a client run parallel app servers on the same machine for the same application for any purposes other than being able to switch between versions of the same application (say, for zero-downtime upgrade strategy). *I wouldn't recommend anyone do that just to switch versions for a zero downtime upgrade strategy as well. Some sort of DR would be better for this ? Down production and switch to DR then when upgrades are complete just reverse what has been done. *Since the OP didn't say that's what his requirements were, there doesn't seem to be a compelling reason to use this strategy. *You're right, until we really know what his requirements/KPI's on that are then most of this is largely academic. Nishi, the link to the redbook is here http://www.redbooks.ibm.com/abstracts/sg246392.html?Open . It's websphere specific, but there's still lot of things you can pick up on and probably apply. On Wed, Nov 12, 2008 at 5:15 AM, Christopher Schultz [EMAIL PROTECTED] wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Pengtuck, [EMAIL PROTECTED] wrote: So let me get this straight. You are reluctant to accept a configuration which gives you improved throughput ? :P No, the OP is unwilling to use a configuration that doesn't make any sense: one single Tomcat should outperform two Tomcats on the same physical server (unless you are talking about a 32-bit JVM that needs a lot of memory). Anyway, this is not an unusual approach, from what I understand this simply makes full use of the resources available on that machine. Not uncommon in real world to see app servers like websphere being configured in that manner. I would rarely recommend that a client run parallel app servers on the same machine for the same application for any purposes other than being able to switch between versions of the same application (say, for zero-downtime upgrade strategy). Since the OP didn't say that's what his requirements were, there doesn't seem to be a compelling reason to use this strategy. - -chris - 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: Problem install APR Tomcat Native Library on Centos 5.2
Hi Mladen, Did what you told me to do but the song remains the same. [EMAIL PROTECTED]:/root]# ldconfig -v /usr/local/apr/lib: libtcnative-1.so.0 - libtcnative-1.so.0.1.15 libaprutil-1.so.0 - libaprutil-1.so.0.3.4 libexpat.so.0 - libexpat.so.0.1.0 libapr-1.so.0 - libapr-1.so.0.3.3 and than restarted tomcat. Nov 12, 2008 6:30:35 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/home/belpop/tomcat/lib:/usr/local/apr/lib:/usr/local/apr:/usr/java/packages/lib/i386:/lib:/usr/lib Paul On Wed, Nov 12, 2008 at 6:04 PM, Milan Cvejic [EMAIL PROTECTED]wrote: Try creating new file in /etc/ld.so.conf.d name it custom.conf or something.conf and add line /usr/local/apr/lib in that file. Then run ldconfig and try to restart tomcat. Paul van Beukering wrote: Hi Mladen The output is: [EMAIL PROTECTED]:/home/belpop/tomcat/lib]$ ldd libtcnative-1.so libssl.so.6 = /lib64/libssl.so.6 (0x2affd1727000) libcrypto.so.6 = /lib64/libcrypto.so.6 (0x2affd197) libapr-1.so.0 = /usr/local/apr/lib/libapr-1.so.0 (0x2affd1cb8000) librt.so.1 = /lib64/librt.so.1 (0x2affd1ee2000) libcrypt.so.1 = /lib64/libcrypt.so.1 (0x2affd20eb000) libpthread.so.0 = /lib64/libpthread.so.0 (0x2affd2323000) libdl.so.2 = /lib64/libdl.so.2 (0x2affd253e000) libc.so.6 = /lib64/libc.so.6 (0x2affd2742000) libgssapi_krb5.so.2 = /usr/lib64/libgssapi_krb5.so.2 (0x2affd2a95000) libkrb5.so.3 = /usr/lib64/libkrb5.so.3 (0x2affd2cc4000) libcom_err.so.2 = /lib64/libcom_err.so.2 (0x2affd2f57000) libk5crypto.so.3 = /usr/lib64/libk5crypto.so.3 (0x2affd3159000) libz.so.1 = /usr/lib64/libz.so.1 (0x2affd337f000) /lib64/ld-linux-x86-64.so.2 (0x0034be40) libkrb5support.so.0 = /usr/lib64/libkrb5support.so.0 (0x2affd3593000) libkeyutils.so.1 = /lib64/libkeyutils.so.1 (0x2affd379c000) libresolv.so.2 = /lib64/libresolv.so.2 (0x2affd399e000) libselinux.so.1 = /lib64/libselinux.so.1 (0x2affd3bb3000) libsepol.so.1 = /lib64/libsepol.so.1 (0x2affd3dcc000) gr Paul On Wed, Nov 12, 2008 at 4:50 PM, Mladen Turk [EMAIL PROTECTED] wrote: Paul van Beukering wrote: Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. OK, if they are in the LD_LIBRARY_PATH what is the output from ldd libtcnative-1.so Regards -- ^(TM) - 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: log POST data
Christopher Schultz wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Markus, Markus Reis wrote: Pardon me for butting in where I'm obviously outclassed, consider this as a genuine question : Would what Markus wants to do not be easier to do with a servlet filter ? It would also be a per-application thing, rather than a one-size-fits-all, no ? - 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: Session replication for JPetStore application in tomcat 6
you could enable tracing for the two following categories org.apache.catalina.ha org.apache.catalina.tribes.MESSAGES Filip Anupam Beri wrote: Hello Filip, Thanks a lot for your reply. From the logs , the session state send is evident .The scenario i tried is as follows I opened the application web page on the first node via my browser , logged in , did some operations like some additions and modifications. I displayed the items in the cart . Then I opened the same application web page on the second node via browser and tried to display the items in the cart and it said that the Cart is empty . I had a few questions ... 1) how can I know if session replication is happening i.e any special debugging can be enabled in log4j ? (from above scenario , the items in the cart should be the same ? can this be the criteria ?) 2) Is it necessary to make the petstore database on each of nodes clustered for session replication to happen ? I wish to do some load testing too with jmeter to see how the load is distributed between workers. Any help will be greatefully appreciated ! Best Regards, Anupam Filip Hanik - Dev Lists wrote: looks like its working, what is it that you don't think is working or would like help with? 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions ATTENTION: Manager [localhost#/jpetstore], requesting session state from org.apache.catalina.tribes.membership.MemberImpl[tcp://{-84, 17, 4, 14}:4000,{-84, 17, 4, 14},4000, alive=276200,id={44 8 -106 78 -12 88 70 -91 -126 47 21 -83 -67 102 67 -94 }, payload={}, command={}, domain={}, ]. This operation will timeout if no session state has been received within 60 seconds. 6 nov. 2008 17:08:30 org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions INFO: Manager [localhost#/jpetstore]; session state send at 06/11/08 17:08 received in 112 ms. Filip Anupam Beri wrote: Hello All , I am a newbie to the Tomcat and Tomcat clustering environment .I was just going through some posts on this forum for reference . I wish to deploy the classic JPetStore application which comes with the Spring framework in the clustered environment involving 2 machines for session replication For this, I installed Apache 2.2 , Tomcat 6.0.18 and mod_jk on each of these machines . I configured mod_jk load balancer for sticky session and deployed JPetStore on either of them . But once I start tomcat and apache on either machine and try to do some transactions , I cannot see any sessions being exchanged between the two members of the cluster. The JPetStore application also uses a database (hsqldb) and its necessary to start one on either machine (it is not a shared one). I was reading some documentation regarding if the session attributes are to be implemented from serializable interface...but I see they already have been in the source code . I will be greateful if anyone could help me out and give a good insight on where I am going wrong ? I have attached the server.xml , workers.properties and catalina.out for the two nodes in the attached file. Any help is deeply appreciated ! Best Regards !! Anupam http://www.nabble.com/file/p20456399/clustering_files.rar clustering_files.rar - 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 Performance
On Wed, Nov 12, 2008 at 2:26 PM, David kerber [EMAIL PROTECTED] wrote: Peng Tuck Kwok wrote: Probably the reason why he's seeing one instance of tomcat moving quicker than 2 instances is the fact that there is some form of contention for resources on that single machine assuming that the 2 instances are configured identically in every aspect (other than ports). You mis-read it. He's seeing twice the performance from two instances than he is one single one, which shouldn't be if the one is properly configured, Or if the application has synchronization/blocking issues. Leon - 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: multiple Set-Cookie headers in initial http response
André Warnier wrote: Markus Reis wrote: Our Tomcat 5.5 sends 30 cookie (cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; domain=null; path=/) Are they all identical? No. They are ALL different (and they also differ from response to response) and 900 Set-Cookie (header=Set-Cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; Path=/; Secure) headers in the http response header back to the external clients (during the initial http request/response). Same here: identical? No. Each of the 30 DIFFERENT session id's from above are repeated thirty times. The 900 Set-Cookie headers contain each cookie JSESSIONID thirty times. That is crazy! How are you observing this behavior? LiveHTTPHeaders/http protocol sniffer? Wireshark/packet sniffer? Yes it is crazy - I observed this using org.apache.catalina.valves.RequestDumperValve in my server.xml If I submit the same request from my machine I get a only/as expected one cookie and one Set-Cookie header back in the initial response. Er... what do you mean from my machine? What are you using when you get 900 Set-Cookie headers? My machine is my PC at work. The requests where a repsonse with 900 SetCookie headers is returned, are sent from PC's of our partners, which operate in one single network (and thus all have the same IP, which is the IP of the partner network's proxy server). If I use some other PC connected to the internet I have the same expected behaviour as from my PC at work. So those responses are only/exclusively produced for requests coming from PC's of our partners. markus Old African proverb : he who wants to eat an elephant, should do it a little bit at a time. I am not basing the following on any deep knowledge of Tomcat, just trying to use the logical cues from what you said so far and the way HTTP servers and browsers normally react. 1) How do you *precisely* know that Tomcat is actually sending 900 Set-Cookie Headers ? does the RequestDumperValve also dump the response ? or is that what you see in the client browser ? In other words, are you really sure that it is Tomcat who is sending all these Set-Cookie headers, or could it be the customer's proxy adding/multiplying them ? (Not that I would know how it could do that, but that's another matter) 2) The client browser gets 900 Set-Cookie headers, of which the basic set of different ones is 30, each multiplied 30 times. So the client browser ends up with 30 cookies set ? Or just one, in the end ? 3) Does this number 30 relate in some way to how many separate stations at your customer access your Tomcat server ? For example, assuming that there would be a way to reset everything, and then turn on a single customer station, and access your Tomcat server once, how many Set-cookies would that one browser get in return ? And then, what if a second station now sends a request ? As a test, why don't you set a cookie on each client PC, (containing a unique identifier, perhaps a username or something else that will identify individual PCs or users), to see if that gets multiplied back to you too. If it does, you may discern more about the pattern of failure. I only get those 900 Set-Cookie headers after/at the initial request; Subsequent requests only have one cookie in http request and response header and look pretty normal. -- GMX Download-Spiele: Preizsturz! Alle Puzzle-Spiele Deluxe über 60% billiger. http://games.entertainment.gmx.net/de/entertainment/games/download/puzzle/index.html - 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: Apache/mod_jk serves random files from tomcat
Jakob Ericsson schrieb: -- Jakob Ericsson +46 704 533 627 11 nov 2008 kl. 22.37 skrev Christopher Schultz [EMAIL PROTECTED]: Jakob, Jakob Ericsson wrote: We are also experiencing this problem. Our setup is running Windows 2003 Server with Apache 2.0.59 (no prefork), mod_jk 1.2.22 and Apache Tomcat/6.0.13. Will upgrading to latest mod_proxy_ajp in Apache httpd 2.2.X solve this problem? If you're willing to donate some time to this, please stick with mod_jk and work with Rainer/Mladen to fix whatever might be wrong. Upgrading to the latest mod_jk is a definite requirement before you continue testing. We are in the process of updating our system to the latest mod_jk. I will give an update if this solves our problem. The underlying problem is hopefully the missed multi thread flag in mod_jk compile. Does anyone know which issue this is in bugzilla? On Woindows I would not expext that to be the problem. mod_jk tries to determine automatically during compile time, whether a multi-threaded environment gets used and then enables thread safe mutexes. On some more exotic platforms like AIX this determination was broken for some time, so some versions ago we decided to compile thread-safe by default and add a new flag to configure to allow compiling without thread support if you give the flag explicitely. On Windows it should have been always thread safe. Nevertheless I appreciate you update first. In case you can reproduce the behaviour, it would be extremely helpful to have a JK log file with debug log level. Unfortunately that is a problem for production because of the high log volume. So if you can reproduce it easily, or when only reproducibale under load othen on a test system, a debug level JK log would be extremely helpful. You can make that available also only privately. I took your mail as a reminder to ask Tim Redding again for his log but did not yet get any response. Regards, Rainer - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Monitoring Tomcat availability in a load balanced capacity
We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? Thanks, --adam - 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: Monitoring Tomcat availability in a load balanced capacity
application manager, is not free, but with the trial licence you can work with all the functionalities. bye 2008/11/13 Adam Gordon [EMAIL PROTECTED]: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? Thanks, --adam - 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: Best Linux JVM to use for Tomcat?
Guys, Anything to say regarding JRockIt ? Is it still under development ? Regards, Pierre On Wed, Nov 12, 2008 at 5:53 PM, Leon Rosenberg [EMAIL PROTECTED] wrote: On Wed, Nov 12, 2008 at 5:34 PM, Dan Armbrust [EMAIL PROTECTED] wrote: Well, I don't know about always. I have yet to find a 1.6 JDK from Sun that is even close to stable. With heavy use (especially heavy multithreaded use), we have found that all of the available 1.6 JDK's segfault. hmm, what kind of heavy use? We are using java version 1.6.0_05 for I think 6 Month now (since end of march 08) and we had not a single issue with it and found it better than 1.5. Considering that the whole 1.6 release was maintenance and performance release I would be surprised otherwise. It's actually first time I hear omeone complaining about 1.6 Java(TM) SE Runtime Environment (build 1.6.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode) Leon P.S. We are running about 70 VMs on about 20 machines with top services serving ~3000 requests per second and more with about 1000 threads. The latest JDK (1.6 update 10) is less than a month old - and it is a huge change set from the previous 1.6 release (1.6 update 7). I wouldn't even think about it for production given Sun's history of releasing crappy code. 1.6 update 10 should have been a major version change given the scope of changes (see - http://java.sun.com/javase/6/webnotes/ReleaseNotes.html ) We still use the latest 1.5 JVM / JDKs. Not that we want to. There is just nothing else out there that doesn't crash under our workload. - 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] -- Parce que c'est la nuit qu'il est beau de croire en la lumière.
Re: Tomcat threads
Op woensdag, 12 november 2008 om 9:56 uur schreef Tomcat Users List users@tomcat.apache.org: Subject: Re: Tomcat threads Date: Wed Nov 12 09:56:01 CET 2008 From: André Warnier [EMAIL PROTECTED] Filip Hanik .. and many others - Dev Lists wrote: [...] Thanks for all the answers, very enlightening. In summary thus : - Tomcat (or rather I suppose the Connector) will create new threads as needed to service simultaneous requests, up to the number given in the Connector's maxThreads attributes. - Once such a thread is created, it remains alive after servicing the request for which it was created, and can thus service future requests - The memory usage one sees with top under some versions of Linux for each one of these threads is not really cumulative, because most of it is actually shared between the threads. The total really used is only slightly more than what is indicated individually for each thread. In other words, after the first thread is created, each additional thread only adds a relatively small overhead. Now let me elaborate one step further, and let me know if this is correct : If in a Tomcat I have one HTTP Connector and one AJP Connector (used with mod_jk), they are two distinct Connectors. (I don't really expect dissent here, but who knows ?) Each one will create new threads as needed to service requests on *that* Connector, independently of the other Connector. So if I access the same application (webapp) multiple times indifferently through one Connector or the other, this will result in two groups of threads, one group per Connector, each group behaving independently like indicated above in the summary. Right ? If right, then it means one would do better choosing if one can, and always access this application through either one of the Connectors, but not both, right ? Or, considering both groups are in the end executing the same webapp application, would the memory used by the two groups of threads end up being largely shared also anyway ? The memory is shared between all threads within one JVM process. This is independent of the Connectors. Ronald.
Re: Monitoring Tomcat availability in a load balanced capacity
Can you please include a link? Google is not helping... Thanks. Alberto Jesus La Rosa Agramonte wrote: application manager, is not free, but with the trial licence you can work with all the functionalities. bye 2008/11/13 Adam Gordon [EMAIL PROTECTED]: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? Thanks, --adam - 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] - 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: Problem install APR Tomcat Native Library on Centos 5.2
It looks to me that you are using 32bit version of JDK on 64bit linux installation? am i right? you are having libraries in /lib64 and also in /usr/jdk1.6.0_10/jre/lib/i386 That may be problem... try installing 64bit version od JDK... Paul van Beukering wrote: Hi Mladen, Did what you told me to do but the song remains the same. [EMAIL PROTECTED]:/root]# ldconfig -v /usr/local/apr/lib: libtcnative-1.so.0 - libtcnative-1.so.0.1.15 libaprutil-1.so.0 - libaprutil-1.so.0.3.4 libexpat.so.0 - libexpat.so.0.1.0 libapr-1.so.0 - libapr-1.so.0.3.3 and than restarted tomcat. Nov 12, 2008 6:30:35 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/jdk1.6.0_10/jre/lib/i386/server:/usr/jdk1.6.0_10/jre/lib/i386:/usr/jdk1.6.0_10/jre/../lib/i386:/home/belpop/tomcat/lib:/usr/local/apr/lib:/usr/local/apr:/usr/java/packages/lib/i386:/lib:/usr/lib Paul On Wed, Nov 12, 2008 at 6:04 PM, Milan Cvejic [EMAIL PROTECTED]wrote: Try creating new file in /etc/ld.so.conf.d name it custom.conf or something.conf and add line /usr/local/apr/lib in that file. Then run ldconfig and try to restart tomcat. Paul van Beukering wrote: Hi Mladen The output is: [EMAIL PROTECTED]:/home/belpop/tomcat/lib]$ ldd libtcnative-1.so libssl.so.6 = /lib64/libssl.so.6 (0x2affd1727000) libcrypto.so.6 = /lib64/libcrypto.so.6 (0x2affd197) libapr-1.so.0 = /usr/local/apr/lib/libapr-1.so.0 (0x2affd1cb8000) librt.so.1 = /lib64/librt.so.1 (0x2affd1ee2000) libcrypt.so.1 = /lib64/libcrypt.so.1 (0x2affd20eb000) libpthread.so.0 = /lib64/libpthread.so.0 (0x2affd2323000) libdl.so.2 = /lib64/libdl.so.2 (0x2affd253e000) libc.so.6 = /lib64/libc.so.6 (0x2affd2742000) libgssapi_krb5.so.2 = /usr/lib64/libgssapi_krb5.so.2 (0x2affd2a95000) libkrb5.so.3 = /usr/lib64/libkrb5.so.3 (0x2affd2cc4000) libcom_err.so.2 = /lib64/libcom_err.so.2 (0x2affd2f57000) libk5crypto.so.3 = /usr/lib64/libk5crypto.so.3 (0x2affd3159000) libz.so.1 = /usr/lib64/libz.so.1 (0x2affd337f000) /lib64/ld-linux-x86-64.so.2 (0x0034be40) libkrb5support.so.0 = /usr/lib64/libkrb5support.so.0 (0x2affd3593000) libkeyutils.so.1 = /lib64/libkeyutils.so.1 (0x2affd379c000) libresolv.so.2 = /lib64/libresolv.so.2 (0x2affd399e000) libselinux.so.1 = /lib64/libselinux.so.1 (0x2affd3bb3000) libsepol.so.1 = /lib64/libsepol.so.1 (0x2affd3dcc000) gr Paul On Wed, Nov 12, 2008 at 4:50 PM, Mladen Turk [EMAIL PROTECTED] wrote: Paul van Beukering wrote: Hello Milan and Mladen, See here the libraries that are created: -rwxr-xr-x 1 belpop belpop 872663 Nov 12 14:41 libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so.0 - libtcnative-1.so.0.1.14 lrwxrwxrwx 1 belpop belpop 23 Nov 12 14:41 libtcnative-1.so - libtcnative-1.so.0.1.14 -rwxr-xr-x 1 belpop belpop 920 Nov 12 14:41 libtcnative-1.la -rw-r--r-- 1 belpop belpop 1561106 Nov 12 14:41 libtcnative-1.a drwxr-xr-x 2 belpop belpop4096 Nov 12 16:17 pkgconfig I did put them in LD_LIBRARY_PATH and in all the JDK directories listed below. Still the same message is shown in the log. OK, if they are in the LD_LIBRARY_PATH what is the output from ldd libtcnative-1.so Regards -- ^(TM) - 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] - 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: multiple Set-Cookie headers in initial http response
André Warnier wrote: Markus Reis wrote: Our Tomcat 5.5 sends 30 cookie (cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; domain=null; path=/) Are they all identical? No. They are ALL different (and they also differ from response to response) and 900 Set-Cookie (header=Set-Cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; Path=/; Secure) headers in the http response header back to the external clients (during the initial http request/response). Same here: identical? No. Each of the 30 DIFFERENT session id's from above are repeated thirty times. The 900 Set-Cookie headers contain each cookie JSESSIONID thirty times. That is crazy! How are you observing this behavior? LiveHTTPHeaders/http protocol sniffer? Wireshark/packet sniffer? Yes it is crazy - I observed this using org.apache.catalina.valves.RequestDumperValve in my server.xml If I submit the same request from my machine I get a only/as expected one cookie and one Set-Cookie header back in the initial response. Er... what do you mean from my machine? What are you using when you get 900 Set-Cookie headers? My machine is my PC at work. The requests where a repsonse with 900 SetCookie headers is returned, are sent from PC's of our partners, which operate in one single network (and thus all have the same IP, which is the IP of the partner network's proxy server). If I use some other PC connected to the internet I have the same expected behaviour as from my PC at work. So those responses are only/exclusively produced for requests coming from PC's of our partners. markus Old African proverb : he who wants to eat an elephant, should do it a little bit at a time. I am not basing the following on any deep knowledge of Tomcat, just trying to use the logical cues from what you said so far and the way HTTP servers and browsers normally react. 1) How do you *precisely* know that Tomcat is actually sending 900 Set-Cookie Headers ? does the RequestDumperValve also dump the response ? or is that what you see in the client browser ? In other words, are you really sure that it is Tomcat who is sending all these Set-Cookie headers, or could it be the customer's proxy adding/multiplying them ? (Not that I would know how it could do that, but that's another matter) 2) The client browser gets 900 Set-Cookie headers, of which the basic set of different ones is 30, each multiplied 30 times. So the client browser ends up with 30 cookies set ? Or just one, in the end ? 3) Does this number 30 relate in some way to how many separate stations at your customer access your Tomcat server ? For example, assuming that there would be a way to reset everything, and then turn on a single customer station, and access your Tomcat server once, how many Set-cookies would that one browser get in return ? And then, what if a second station now sends a request ? As a test, why don't you set a cookie on each client PC, (containing a unique identifier, perhaps a username or something else that will identify individual PCs or users), to see if that gets multiplied back to you too. If it does, you may discern more about the pattern of failure. p - 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: multiple Set-Cookie headers in initial http response
Markus Reis wrote: Our Tomcat 5.5 sends 30 cookie (cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; domain=null; path=/) Are they all identical? No. They are ALL different (and they also differ from response to response) and 900 Set-Cookie (header=Set-Cookie=JSESSIONID=2D79FB71207A83A09B32677B9640693E.jbprod; Path=/; Secure) headers in the http response header back to the external clients (during the initial http request/response). Same here: identical? No. Each of the 30 DIFFERENT session id's from above are repeated thirty times. The 900 Set-Cookie headers contain each cookie JSESSIONID thirty times. That is crazy! How are you observing this behavior? LiveHTTPHeaders/http protocol sniffer? Wireshark/packet sniffer? Yes it is crazy - I observed this using org.apache.catalina.valves.RequestDumperValve in my server.xml If I submit the same request from my machine I get a only/as expected one cookie and one Set-Cookie header back in the initial response. Er... what do you mean from my machine? What are you using when you get 900 Set-Cookie headers? My machine is my PC at work. The requests where a repsonse with 900 SetCookie headers is returned, are sent from PC's of our partners, which operate in one single network (and thus all have the same IP, which is the IP of the partner network's proxy server). If I use some other PC connected to the internet I have the same expected behaviour as from my PC at work. So those responses are only/exclusively produced for requests coming from PC's of our partners. markus Old African proverb : he who wants to eat an elephant, should do it a little bit at a time. I am not basing the following on any deep knowledge of Tomcat, just trying to use the logical cues from what you said so far and the way HTTP servers and browsers normally react. 1) How do you *precisely* know that Tomcat is actually sending 900 Set-Cookie Headers ? does the RequestDumperValve also dump the response ? or is that what you see in the client browser ? In other words, are you really sure that it is Tomcat who is sending all these Set-Cookie headers, or could it be the customer's proxy adding/multiplying them ? (Not that I would know how it could do that, but that's another matter) Yes, the RequestDumperValve also dumps the response - therefore I'm SURE that it is Tomcat that sends the 900 Set-Cookie headers and no other network component between client and server. 2) The client browser gets 900 Set-Cookie headers, of which the basic set of different ones is 30, each multiplied 30 times. So the client browser ends up with 30 cookies set ? Or just one, in the end ? The client sends only one cookie in the following requests (this cookie is the last one in the list of Set-Cookie headers). All those requests only have this one/single cookie in their requests (and responses). 3) Does this number 30 relate in some way to how many separate stations at your customer access your Tomcat server ? For example, assuming that there would be a way to reset everything, and then turn on a single customer station, and access your Tomcat server once, how many Set-cookies would that one browser get in return ? And then, what if a second station now sends a request ? I have no idea how many separate clients/workstations are accessing our Tomcat (due to the partner network's proxy) - it could be thirty, but still: How should Tomcat know about that? I also have no possibility to go (physically) to our partner and try something out. Further I found out that this happens only with an initial POST request - if I do the same via GET only one Set-Cookie header is returned (I wrote before that I was not able to reproduce those 900 Set-Cookie headers on my PC, but that was due to the fact that I sent the request as a GET - If I send the same data via a POST request I also get ~900 Set-Cookie headers, with the only difference that all of them always contain the exactly same JSESSIONID). -- Feel free - 5 GB Mailbox, 50 FreeSMS/Monat ... Jetzt GMX ProMail testen: http://www.gmx.net/de/go/promail - 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: Monitoring Tomcat availability in a load balanced capacity
On Wed, Nov 12, 2008 at 9:42 AM, Adam Gordon [EMAIL PROTECTED] wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Simplest: add an HTTP connector to use for testing. :-) Re' forcing the instance to use -- see the entry for jvmRoute in http://tomcat.apache.org/tomcat-5.5-doc/config/engine.html FWIW, -- Hassan Schroeder [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: Does jsessionid on the URL also check the User-Agent?
Torsten, Thank you for the quick reply. My apologies: I was getting confused. I now realise sending jsessionid on the URL gets ignored if there is already a jsessionid in the cookie, which there will be if you have even briefly touched the site in any way (eg. to pull up the login page). Thanks for you help. Regards, Richard. -- View this message in context: http://www.nabble.com/Does-jsessionid-on-the-URL-also-check-the-User-Agent--tp20454717p20466801.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]
Re: How to set JAVA_OPTS variable in tomcat6.0.16
On Wed, Nov 12, 2008 at 11:17 AM, bhavik shah [EMAIL PROTECTED] wrote: Hi, I want to set Xms1024m Xmx1024m and MaxPermSize paramater to 128 How do I do that in tomcat6.0.16 Hi, just need to have the variable JAVA_OPTS exported. # export JAVA_OPTS=-Xms1024m -Xmx1024m automatically tomcat add it when starting the service... catalina.sh ... 182 # Set juli LogManager if it is present 183 if [ -r $CATALINA_BASE/conf/logging.properties ]; then 184 JAVA_OPTS=$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties 185 fi ... Saludos y abrazos... Marco Antonio Frias Butrón [EMAIL PROTECTED] Slackware ~ Linux User #356229 - 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: Monitoring Tomcat availability in a load balanced capacity
Adam Gordon wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? I don't think you would need a special product to do that, open source or not. On your Apache front-end, it would probably be easy to set up a proxy, which via simple HTTP would proxy just the links you want to either one of your back-end Tomcat HTTP ports. You would need the HTTP Connector active on each Tomcat, but that should already be the case by default. Someone better versed in Apache mod_proxy could help you there. Maybe try the list at [EMAIL PROTECTED] if you don't get more help here. Of course, if you can access your Tomcats directly through their own HTTP ports, then you don't even need that. I'm just assuming you cannot. - 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: Monitoring Tomcat availability in a load balanced capacity
On Wed, Nov 12, 2008 at 9:42 AM, Adam Gordon [EMAIL PROTECTED] wrote: Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. As Hassan suggested, make sure that you set jvmRoutes in the Tomcat configuration and that you also match the node name to the jvmRoute in your mod_jk configuration. Once you do this, you can fake a session parameter like this to get to the desired node, where node1 is the name of the node. You can be able to substitute healthcheck with any string you like. http://www.example.com/;jsessionid=healthcheck.node1 -Dave - 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: multiple Set-Cookie headers in initial http response
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Markus, Markus Reis wrote: Yes, the RequestDumperValve also dumps the response - therefore I'm SURE that it is Tomcat that sends the 900 Set-Cookie headers and no other network component between client and server. I second Andre's recommendation that you use LiveHTTPHeaders to capture the actual response received at the client. It's possible that there is a bug in the RequestDumperValve that emits too many Set-Cookie headers (but that seems unlikely since they are all different). - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbLE4ACgkQ9CaO5/Lv0PDr2wCfW2o/qbTR8R7MDJDUGK0ka8ED OuYAmwWMkf1zMVSSyeRbCO9D8fYc05N/ =gt7m -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]
Re: Issue on parsing struts.xml
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Nar, Nar Karapetyan wrote: Linux server gives the exceptions for https://localhost Sorry I misunderstood. Please post a complete stack trace. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbLQAACgkQ9CaO5/Lv0PD5LgCgm7GYgJV7Tu2J8WmI8R9YB6cT uvkAoKqsInP3UBrXWIUEFC6P1mwGjRoP =BaD7 -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]
Re: log POST data
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 André, André Warnier wrote: Would what Markus wants to do not be easier to do with a servlet filter ? It would also be a per-application thing, rather than a one-size-fits-all, no ? Markus was looking at using the ExtendedLogAccessValve which does everything he wants except to include the POST body in the logging. I was suggesting that he augment the Valve to include that capability, as someone else might want to do the same thing. (I always look for opportunities for TC users to improve TC whenever possible). Yes, a Filter could have been used. Valves are basically TC-specific Filters that operate at a slightly lower level: they fill the same type of niche, but have access to TC-specific classes instead of just the servlet API stuff (for instance, you can get to TC's Request instead of just what's available through HttpServletRequest). Since the existing implementation was a Valve, I would recommend that he modify it instead of porting it to a Filter. Valves can be applied to specific applications in context.xml, so it's not necessary to apply a Valve to all applications. Honestly, an app-server-agnostic Filter that performs the same function would be a really useful thing to write. Care to try your hand at writing it? ;) Hope that helps, - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbJ/oACgkQ9CaO5/Lv0PBUkQCfee0pLFhlmbqdwJ08RT5i/JMB RxMAn3fMI+tNW9xaUuV2SxtO7x+RtTnd =FGZy -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]
RE: How to set JAVA_OPTS variable in tomcat6.0.16
From: Marco Antonio [mailto:[EMAIL PROTECTED] Subject: Re: How to set JAVA_OPTS variable in tomcat6.0.16 Hi, just need to have the variable JAVA_OPTS exported. # export JAVA_OPTS=-Xms1024m -Xmx1024m That works for Linux (except for the leading # that turns it into a comment), but says nothing for Windows script or service usage. (The OP didn't bother to tell us the platform being used.) If running from a Windows script, do the SET JAVA_OPTS before running startup.bat; if using Tomcat as a Windows service, use the Java tab of the tomcat6w.exe program to set up the options. - 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]
Re: Tomcat threads
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Chuck, Caldarale, Charles R wrote: From: Christopher Schultz [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads recent JVMs use shared memory to share common class data (like JITed object code from java.* packages) Careful - JITed code is *not* shared - only some of the PermGen is, and that only on a -client JVM. When running -server mode, nothing is shared across JVMs (that may change in Java SE 7 - haven't checked yet). The PermGen contains loaded classes, but not JIT-generated code. Thanks for clearing that up; I especially didn't know that -client was required. PermGen seems like an odd item to share... though I guess all those java.lang.Package, java.lang.Class, java.lang.Method, etc. objects can really beat a system down. I was under the impression that only java.* classes were shared, and not just anything that was loaded by a bootstrap classloader (see your other post for that speculation). It would seem odd to share, say, Tomcat's classes with other -client JVMs. For those interested in reading more, here is Sun's documentation for this feature: http://java.sun.com/javase/6/docs/technotes/guides/vm/class-data-sharing.html If you use IBM's JVM, here is some info on class sharing, which works differently (article is a bit outdated): http://www.ibm.com/developerworks/java/library/j-ibmjava4/ - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbMAcACgkQ9CaO5/Lv0PDWRgCgoE72SJ1cS7nKvSHh0KoGdxcC 5IgAoJHn4A+p+jjy8Ad3FgylzpRhpn7N =pd2w -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]
Re: [Http]ServletResponseWrapper.getOutputStream()
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Michael, Michael Ludwig wrote: So the output of S gets collected by WR and is now available to F. And F calls getWriter() on the original response, and this to my surprise triggers an IllegalStateException: getOutputStream() has already been called for this response But I haven't called getOutputStream() - I've called getWriter(). Yes, but your included resource probably called getOutputStream. You should really override getOutputStream as well as getWriter in your HttpServletResponseWrapper. So is it the recommended approach in this sort of scenario (or contrived example) to proceed as observed in the DefaultServlet, by first trying one of SOS and PW, catch the exception and then try the other one? Unfortunately, I don't know if a way to check to see which of getOutputStream/getWriter was called, so you might have to do this. So how can I implement getOutputStream() to substitute a buffer? Does anyone have an implementation? How are you doing this with getWriter? With a StringWriter? Maybe you want to look at java.io.ByteArrayOutputStream. But even with my Filter overriding both getOutputStream() and getWriter() and substituting buffers that will be written to, there is a problem. Servlet S will write to one buffer, and the DefaultServlet will write to another one. The place of the include set in the source code of S will be lost. Is this analysis correct? Mostly. What you need to do is provide a unified buffer that /both/ calls can write to. If you use a ByteArrayOutputStream at the lowest level and then wrap that in an OutputStreamWriter for calls to getWriter(), you should be able to handle arbitrary use of your wrapper. Hope that helps, - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbMoAACgkQ9CaO5/Lv0PCa9QCeMVLbd4dHVE6NwRHI9U2hAdM3 gxkAnR/zKPYvM8hQWSoKzGdrDoOsUC7q =zT3d -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]
Re: Does jsessionid on the URL also check the User-Agent?
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Richard, kennardconsulting wrote: ...does Tomcat do something clever, like checking the User-Agent, before agreeing to hook into the existing '123' session? No. Tomcat will append the jsessionid parameter if the client has not yet proven that Cookies will be sent back to the server. Usually, this happens on the response to the first request, but not after any cookie has had a round-trip to the client back to the server. If I log in using, say, Firefox and note the jsessionid, then open a new Firefox and paste in a URL like the one above it works as expected. But if I open IE and paste the same URL it doesn't work? What do you mean doesn't work? You don't get the same session (you should)? Or, you get the same session, but further URLs don't contain the jsessionid parameter? If the latter is the case, then IE is simply sending a cookie to Tomcat and therefore Tomcat knows that the session id can be managed with a cookie and URL rewriting doesn't have to be done. Does the URL rewriting check the User Agent? Can I turn this off? \No user agent checking, so there's nothing to disable. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbMzsACgkQ9CaO5/Lv0PDrPgCfbRThbmXP8KrbcyNlZbBKGqSS TE8AoKpnnFHXUrHh7NL5aKG25CMtq7+O =e1BJ -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]
Re: Connection Leak in java - Tomcat 6.0.18
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Arun, Arun Raj Ramkumar wrote: Hi friends, Please let me know is there a way to find out connection leak in my java code , when its deployed in tomcat. Am using tomcat 6.0.18 What type of connection? - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbM28ACgkQ9CaO5/Lv0PCW8wCfT5sUBsISbomP9/+NB8M1clXH XUYAn2M0BSRPOQaNi+AwE4kruF81xODN =0NRI -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]
Re: Tomcat threads, II
André Warnier wrote: Hi again. Now that I have (with your help) established some basic facts, I have a practical case for analysis. Before I get into details (because this is quite long), I'd like to explain the reason why I'm asking this. We have been testing a Tomcat application from a vendor. It works very nicely when it is started on a test system, and does what we expect. But the load it imposes on our test Tomcat at startup, makes me a bit insecure about deploying it to a production server, before I really understand what is happening. Not being a Java or Tomcat expert, I'm just trying to collect some pointers, to see if I can do something about what I am observing, or if that's it and we just have to live with it. The main thing is, I don't even know where to start, so I would appreciate some help, even if very basic. There is quite a bit of data below. We have an old clunker PC (Pentium II, 512 Mb Ram, average ATA disks), which we use to test some applications (not only Java/Tomcat). Its a Linux system, and runs this Tomcat : Using CATALINA_BASE: /usr/share/tomcat5.5 Using CATALINA_HOME: /usr/share/tomcat5.5 Using CATALINA_TMPDIR: /usr/share/tomcat5.5/temp Using JRE_HOME: /usr/lib/jvm/java-1.5.0-sun Server version: Apache Tomcat/5.5 Server built: Jan 20 2008 12:32:00 Server number: 5.5.20.0 OS Name:Linux OS Version: 2.6.18-6-686 Architecture: i386 JVM Version:1.5.0_14-b03 JVM Vendor: Sun Microsystems Inc. The full command used to start Tomcat is : /usr/lib/jvm/java-1.5.0-sun/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/var/lib/tomcat5.5/conf/logging.properties -Djava.awt.headless=true -Xmx256M -server -Djava.endorsed.dirs=/usr/share/tomcat5.5/common/endorsed -classpath :/usr/lib/jvm/java-1.5.0-sun/jre//lib/jcert.jar:/usr/lib/jvm/java-1.5.0-sun/jre//lib/jnet.jar:/usr/lib/jvm/java-1.5.0-sun/jre//lib/jsse.jar:/usr/share/tomcat5.5/bin/bootstrap.jar:/usr/share/tomcat5.5/bin/commons-logging-api.jar -Djava.security.manager -Djava.security.policy==/var/lib/tomcat5.5/conf/catalina.policy -Dcatalina.base=/var/lib/tomcat5.5 -Dcatalina.home=/usr/share/tomcat5.5 -Djava.io.tmpdir=/var/lib/tomcat5.5/temp org.apache.catalina.startup.Bootstrap start Under Tomcat there, there is an application which we get from outside and of which we do not have the source. This application is loaded at Tomcat startup. When Tomcat has been running for a while, but the system and Tomcat are basically idle, a top with the option n (sort by memory usage), shows this (first few lines only) : top - 10:15:54 up 162 days, 16:25, 2 users, load average: 0.19, 0.09, 0.03 Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie Cpu(s): 2.0%us, 0.3%sy, 0.0%ni, 97.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem:516920k total, 509716k used, 7204k free,71992k buffers Swap: 1297564k total, 131340k used, 1166224k free,95148k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 6226 tomcat55 25 0 506m 191m 10m S 0.0 37.9 140:26.15 java 5937 root 22 0 267m 26m 8056 S 0.0 5.2 25:26.88 java 24608 root 23 0 260m 15m 9332 S 0.0 3.1 0:02.08 java 24638 root 15 0 29564 15m 5984 S 0.0 3.0 0:02.16 apache2 24627 efs 15 0 16964 12m 1968 S 0.0 2.6 0:06.68 MiraLoader.pl 24662 www-data 15 0 29564 10m 1632 S 0.0 2.2 0:02.91 apache2 24668 www-data 16 0 29564 10m 1624 S 0.0 2.2 0:02.50 apache2 24663 www-data 15 0 29564 10m 1620 S 0.0 2.2 0:02.78 apache2 etc.. (the other 2 java processes are separate java daemons, nothing to do with Tomcat). At this point Tomcat and this external application are very responsive, at least in single-user mode. We have not really done yet a multi-user test. Now, if I stop and restart Tomcat, for something like 6 minutes after that, the same top display shows this kind of thing : (There are 4 consecutive snapshots here, taken at more or less regular intervals during the 6 minutes) I) top - 12:44:56 up 162 days, 18:54, 3 users, load average: 0.99, 0.27, 0.08 Tasks: 85 total, 3 running, 82 sleeping, 0 stopped, 0 zombie Cpu(s): 98.0%us, 2.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem:516920k total, 351160k used, 165760k free,54548k buffers Swap: 1297564k total,7k used, 1227564k free, 128152k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 2864 tomcat55 25 0 463m 40m 11m R 97.9 7.9 0:25.62 java 5937 root 16 0 267m 24m 8056 S 0.0 4.9 25:38.84 java 24608 root 23 0 260m 15m 9332 S 0.0 3.1 0:02.17 java 24638 root 15 0 29564 15m 5984 S 0.0 3.0 0:02.16 apache2 24627 efs 15 0 16964 12m 1968 S 0.0 2.6 0:06.74 MiraLoader.pl 24664 www-data 15 0 29692 12m 3428 S
RE: Tomcat threads, II
From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads, II I have turned it off now, and restarted Tomcat, but it did not have any noticeable impact on the startup time. Wouldn't expect it to, since you're spending nearly all the time parsing that XML file. It may have an effect when you actually start processing requests, but the impact may be small. As far as I can tell, these settings come from the catalina.sh script. I have no idea if this script is modified, compared to the Official version. Yes, the Debians screwed it up, by trying to patch it to work with gcj (a futile and pointless task). The real script only adds the extra jars if you specify an alternate secure sockets library with the JSSE_HOME environment variable. it seems to have survived (apart from bootstrap.jar, which I had to leave) Yes, bootrstrap.jar is the only thing that should be on the classpath. But that did not apparently reduce its startup time much. If your startup were not completely dominated by the XML parsing, you should see some difference. If anything, it seems now to occupy more memory than before : Is there an explanation for that ? No, the exact amount probably varies considerably over time and really isn't anything to worry about. I also don't seem to be able to run JConsole. You'll need to attach remotely. Assuming your target system is protected from potential threats by some external means, you can set jmxremote handling without authentication by adding these parameters for starting Tomcat: -Dcom.sun.management.jmxremote.port=jmxport -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false (all on one line, of course). Use CATALINA_OPTS or JAVA_OPTS to set them. Then run JConsole from your desktop, and give it the IP address and JMX port of the Tomcat machine in the Remote Process box. Full reference is here: http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jconsole.html http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.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 start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Apache/mod_jk serves random files from tomcat
On Wed, Nov 12, 2008 at 12:21 PM, Rainer Jung [EMAIL PROTECTED] wrote: Jakob Ericsson schrieb: -- Jakob Ericsson +46 704 533 627 11 nov 2008 kl. 22.37 skrev Christopher Schultz [EMAIL PROTECTED]: Jakob, Jakob Ericsson wrote: We are also experiencing this problem. Our setup is running Windows 2003 Server with Apache 2.0.59 (no prefork), mod_jk 1.2.22 and Apache Tomcat/6.0.13. Will upgrading to latest mod_proxy_ajp in Apache httpd 2.2.X solve this problem? If you're willing to donate some time to this, please stick with mod_jk and work with Rainer/Mladen to fix whatever might be wrong. Upgrading to the latest mod_jk is a definite requirement before you continue testing. We are in the process of updating our system to the latest mod_jk. I will give an update if this solves our problem. The underlying problem is hopefully the missed multi thread flag in mod_jk compile. Does anyone know which issue this is in bugzilla? On Woindows I would not expext that to be the problem. mod_jk tries to determine automatically during compile time, whether a multi-threaded environment gets used and then enables thread safe mutexes. On some more exotic platforms like AIX this determination was broken for some time, so some versions ago we decided to compile thread-safe by default and add a new flag to configure to allow compiling without thread support if you give the flag explicitely. On Windows it should have been always thread safe. We have updated a couple of our machines in the production environment to 1.2.27 and it looks quite good. Tomorrow, we will upgrade all machines and hopefully the problem will disappear. I´ll keep you posted. Nevertheless I appreciate you update first. In case you can reproduce the behaviour, it would be extremely helpful to have a JK log file with debug log level. Unfortunately that is a problem for production because of the high log volume. So if you can reproduce it easily, or when only reproducibale under load othen on a test system, a debug level JK log would be extremely helpful. You can make that available also only privately. We have tried to replicate the problem in a test environment but all attempts have been unsuccessful. As you probably understand, we can not enable debug log in the production environment. The thing we see is basically the same as people have said in this thread before. First request's response is served to the second request's response. :-) And it only happens when it is one the same thread in tomcat. I took your mail as a reminder to ask Tim Redding again for his log but did not yet get any response. Regards, Rainer - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- Jakob Ericsson, JAKERI AB Tel. +46 704 533 627
Re: Best Linux JVM to use for Tomcat?
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Leon, Leon Rosenberg wrote: suns current jdk is always the best choice. the current one is 6.10 I'm not sure about current versions, but several years ago, IBM had the fastest JVM out there, although it used more memory than Sun's. I did, though, hear that there was some weirdness in certain places like IO (IBM's 32-bit JVMs were hosing java.io.File.length() reports by accidentally using a 32-bit integer instead of a 64-bit one like they're supposed to). Whatever JVM you choose, make sure your test environment matches your production environment! - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbMQMACgkQ9CaO5/Lv0PDa6gCeKOoDPkZW9mG5SwIOwpt0zfU0 6NIAoKaSbSeG7tg/to+y5Z/sYRp7yxsk =46Yi -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]
RE: Tomcat threads
From: Christopher Schultz [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads PermGen seems like an odd item to share... though I guess all those java.lang.Package, java.lang.Class, java.lang.Method, etc. objects can really beat a system down. The sharing is not for capacity purposes, merely to reduce JVM startup time. I was under the impression that only java.* classes were shared, and not just anything that was loaded by a bootstrap classloader That is likely correct. Since we use the -server version pretty much exclusively, it's a don't care for us. - 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]
RE: How to set JAVA_OPTS variable in tomcat6.0.16
Try this link, if you can't click on it, copy and past it. http://bugs.sakaiproject.org/confluence/display/DOC/Section+-+Tomcat+Installation+(2.5) For the Tomcat service on Windows, you have to modify the registry. The key is a multi_reg_sz key, so you'll have to append to that list. You can use the tomcat5/6w.exe to do that instead of using the regedit program. Hope that helps! From: [EMAIL PROTECTED] To: users@tomcat.apache.org Date: Wed, 12 Nov 2008 13:33:17 -0600 Subject: RE: How to set JAVA_OPTS variable in tomcat6.0.16 From: Marco Antonio [mailto:[EMAIL PROTECTED] Subject: Re: How to set JAVA_OPTS variable in tomcat6.0.16 Hi, just need to have the variable JAVA_OPTS exported. # export JAVA_OPTS=-Xms1024m -Xmx1024m That works for Linux (except for the leading # that turns it into a comment), but says nothing for Windows script or service usage. (The OP didn't bother to tell us the platform being used.) If running from a Windows script, do the SET JAVA_OPTS before running startup.bat; if using Tomcat as a Windows service, use the Java tab of the tomcat6w.exe program to set up the options. - 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] _ Get 5 GB of storage with Windows Live Hotmail. http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_5gb_112008
Re: Tomcat threads, II
Pid wrote: ... Having said that, parsing XML can be a memory intensive operation as well, so your old box could be experiencing problems there - check the garbage collection log. p I try to avoid XML for this exact reason. We found that our application could handle between 6 and 10 times more concurrent requests on the same hardware when we went away from XML data transmission, and switched to a simple text-based HTTP POST request. D - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Tomcat 5.5.23 Cluster Problem - (memberDisappeared)
Hello! I'm trying to finish my configuration of the cluster. But i get the message of 'memberDisappeared' in both nodes: Node1: users@tomcat.apache.org12-Nov-08 5:30:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=218675] 12-Nov-08 5:30:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=218675] 12-Nov-08 5:40:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=818689] 12-Nov-08 5:40:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=818689] 12-Nov-08 5:50:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=1418703] 12-Nov-08 5:50:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=1418703] 12-Nov-08 5:55:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=1718685] 12-Nov-08 5:55:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=1718685] 12-Nov-08 6:00:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=2018717] 12-Nov-08 6:00:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=2018717] 12-Nov-08 6:05:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=2318699] 12-Nov-08 6:05:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=2318699] 12-Nov-08 6:10:36 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.21:4001 ,catalina,172.16.12.21,4001, alive=2618680] 12-Nov-08 6:10:39 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.21:4001,catalina,172.16.12.21,4001, alive=2618680] Node2: 12-Nov-08 5:35:42 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.111:4002 ,catalina,172.16.12.111,4002, alive=528177] 12-Nov-08 5:35:45 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.111:4002,catalina,172.16.12.111,4002, alive=528177] 12-Nov-08 5:45:42 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.111:4002 ,catalina,172.16.12.111,4002, alive=1128179] 12-Nov-08 5:45:45 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.111:4002,catalina,172.16.12.111,4002, alive=1128179] 12-Nov-08 5:50:42 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.111:4002 ,catalina,172.16.12.111,4002, alive=1428198] 12-Nov-08 5:50:45 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberDisappeared INFO: Received member disappeared:org.apache.catalina.cluster.mcast.McastMember[tcp:// 172.16.12.111:4002,catalina,172.16.12.111,4002, alive=1428198] 12-Nov-08 5:55:42 PM org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded INFO: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://172.16.12.111:4002
Re: Tomcat 5.5.23 Cluster Problem - (memberDisappeared)
hello thats my configurations files, and work without problems. cluster 1 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c1 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false 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=50 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 waitForAck=true Transport className=org.apache.catalina.tribes.transport.nio.PooledParallelSender timeout=6 keepAliveTime=12/ /Sender Valve className=org.apache.catalina.cluster.tcp.ReplicationValve filter=.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;/ Deployer className=org.apache.catalina.cluster.deploy.FarmWarDeployer tempDir=/tmp/war-temp/ deployDir=/tmp/war-deploy/ watchDir=/tmp/war-listen/ watchEnabled=false/ ClusterListener className=org.apache.catalina.cluster.session.ClusterSessionListener/ /Cluster /Host /Engine /Service /Server cluster 2 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c2 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false 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=50
Re: Tomcat 5.5.23 Cluster Problem - (memberDisappeared)
Alberto, Could you please send me the complete configurations of both nodes, this that you sent to me is missing something. =( Thanks a lot for you fast reply! 2008/11/12 Alberto Jesus La Rosa Agramonte [EMAIL PROTECTED] hello thats my configurations files, and work without problems. cluster 1 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c1 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false 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=50 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 waitForAck=true Transport className=org.apache.catalina.tribes.transport.nio.PooledParallelSender timeout=6 keepAliveTime=12/ /Sender Valve className=org.apache.catalina.cluster.tcp.ReplicationValve filter=.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;/ Deployer className=org.apache.catalina.cluster.deploy.FarmWarDeployer tempDir=/tmp/war-temp/ deployDir=/tmp/war-deploy/ watchDir=/tmp/war-listen/ watchEnabled=false/ ClusterListener className=org.apache.catalina.cluster.session.ClusterSessionListener/ /Cluster /Host /Engine /Service /Server cluster 2 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c2 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false Cluster className=org.apache.catalina.cluster.tcp.SimpleTcpCluster managerClassName=org.apache.catalina.cluster.session.DeltaManager expireSessionsOnShutdown=false
Re: Using JAXB with tomcat
On Wed, 12 Nov 2008 09:09:01 +0100 [EMAIL PROTECTED] wrote: I am not sure if this works and it is probably not a nice solution, but maybe you can do something like BoOcorrenciaPolicial bo = (BoOcorrenciaPolicial) unmarshaller.unmarshal(new File(XML_DIR + id + .xml)); Class clazz = bo.getClass(); Field field = clazz.getDeclaredField(hist); field.setAccessible(true); String hist = bo.getHist(); Like that you would at least not have to change the fields from protected to public. Hm, I'm not sure I liked that solution so much. I was having some other trouble with loading of classes and then I decided to add the following to my catalina.policy: grant { permission java.security.AllPermission; ... }; After that I didn't even have to rename the fields to public or anything. Though I think I have just given permission to my webapp to do whatever it pleases. That doesn't seem very safe, so I would appreciate if someone knows a more specific permission for my case. - 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: Monitoring Tomcat availability in a load balanced capacity
Hassan- I apologize if I wasn't clear. We are already running Tomcat in a load-balanced capacity with sticky sessions which means the jvmRoute is already set and configured correctly. What we are looking to do is ensure that the actual Tomcat instance isn't a zombie, rather, that it can still accept connections. That said, adding another Connector that does not use mod JK actually works, so this is the route we will take. Thanks. --adam Hassan Schroeder wrote: On Wed, Nov 12, 2008 at 9:42 AM, Adam Gordon [EMAIL PROTECTED] wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Simplest: add an HTTP connector to use for testing. :-) Re' forcing the instance to use -- see the entry for jvmRoute in http://tomcat.apache.org/tomcat-5.5-doc/config/engine.html FWIW, - 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 5.5.23 Cluster Problem - (memberDisappeared)
It is not working for me =[ 2008/11/12 Gustavo Araujo [EMAIL PROTECTED] Alberto, Could you please send me the complete configurations of both nodes, this that you sent to me is missing something. =( Thanks a lot for you fast reply! 2008/11/12 Alberto Jesus La Rosa Agramonte [EMAIL PROTECTED] hello thats my configurations files, and work without problems. cluster 1 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c1 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false 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=50 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 waitForAck=true Transport className=org.apache.catalina.tribes.transport.nio.PooledParallelSender timeout=6 keepAliveTime=12/ /Sender Valve className=org.apache.catalina.cluster.tcp.ReplicationValve filter=.*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;/ Deployer className=org.apache.catalina.cluster.deploy.FarmWarDeployer tempDir=/tmp/war-temp/ deployDir=/tmp/war-deploy/ watchDir=/tmp/war-listen/ watchEnabled=false/ ClusterListener className=org.apache.catalina.cluster.session.ClusterSessionListener/ /Cluster /Host /Engine /Service /Server cluster 2 Server port=8005 shutdown=SHUTDOWN Listener className=org.apache.catalina.core.AprLifecycleListener / Listener className=org.apache.catalina.mbeans.ServerLifecycleListener / Listener className=org.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener className=org.apache.catalina.storeconfig.StoreConfigLifecycleListener/ GlobalNamingResources Environment name=simpleValue type=java.lang.Integer value=30/ 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 Service name=Catalina Connector port=8080 maxHttpHeaderSize=8192 maxThreads=150 minSpareThreads=25 maxSpareThreads=75 enableLookups=false redirectPort=8443 acceptCount=100 connectionTimeout=2 disableUploadTimeout=true / Connector port=8009 enableLookups=false redirectPort=8443 protocol=AJP/1.3 / Engine name=Catalina defaultHost=localhost jvmRoute=c2 Realm className=org.apache.catalina.realm.UserDatabaseRealm resourceName=UserDatabase/ Host name=node2 appBase=webapps unpackWARs=true autoDeploy=true xmlValidation=false xmlNamespaceAware=false Cluster className=org.apache.catalina.cluster.tcp.SimpleTcpCluster
Re: Monitoring Tomcat availability in a load balanced capacity
See my reply to Hassan. I think setting up a proxy would be overkill, and besides, when running Tomcat in a load-balanced capacity w/ sticky sessions using mod JK, while you can connect directly to the port on which Tomcat is listening for mod JK requests, unless you speak mod JK, it doesn't do anything. --adam André Warnier wrote: Adam Gordon wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? I don't think you would need a special product to do that, open source or not. On your Apache front-end, it would probably be easy to set up a proxy, which via simple HTTP would proxy just the links you want to either one of your back-end Tomcat HTTP ports. You would need the HTTP Connector active on each Tomcat, but that should already be the case by default. Someone better versed in Apache mod_proxy could help you there. Maybe try the list at [EMAIL PROTECTED] if you don't get more help here. Of course, if you can access your Tomcats directly through their own HTTP ports, then you don't even need that. I'm just assuming you cannot. - 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]
Get Security subject from Tomcat
Hi, Is there is was I can get the authenticated User from inside my servlet/filter? IT seems none of the assumed ways work : getSession().getAttribute(Globals.SUBJECT_ATTR); Subject.getSubject(AccessController.getContext()); Please reply directly, I am not subscribed. -thanks, -arash -- The dirtiest book of all is the expurgated book. Walt Whitman
Re: Tomcat threads
Caldarale, Charles R wrote: From: Christopher Schultz [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads PermGen seems like an odd item to share... though I guess all those java.lang.Package, java.lang.Class, java.lang.Method, etc. objects can really beat a system down. The sharing is not for capacity purposes, merely to reduce JVM startup time. I was under the impression that only java.* classes were shared, and not just anything that was loaded by a bootstrap classloader That is likely correct. Since we use the -server version pretty much exclusively, it's a don't care for us. Since apparently this conversation clears some matters up, even for gurus, would one of you care to back-up a couple of messages, and re-state the final consensus in English for us mere mortals ? Like what gets shared when, in a usual JVM 1.5+ /Tomcat 5.5+ context, with say two parallel instances of Tomcat running on the same host ? (and what is PermGen ?) Thanks. - 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: Get Security subject from Tomcat
From: Arash Bizhan zadeh [mailto:[EMAIL PROTECTED] Subject: Get Security subject from Tomcat Is there is was I can get the authenticated User from inside my servlet/filter? Perhaps reading the Servlet spec or the APIs would help: http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServletRequest.html#getUserPrincipal() Please reply directly, I am not subscribed. Then I guess you won't see the response... - 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]
Re: Does jsessionid on the URL also check the User-Agent?
Chris, Thanks for your prompt reply. My apologies - I was getting confused. The browser had already assigned a jsessionid through a cookie just by viewing the login page, so from them on anything I passed on the URL was being ignored. Thanks for your time, Richard. -- View this message in context: http://www.nabble.com/Does-jsessionid-on-the-URL-also-check-the-User-Agent--tp20454717p20469889.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]
RE: Tomcat threads
From: André Warnier [mailto:[EMAIL PROTECTED] Subject: Re: Tomcat threads Since apparently this conversation clears some matters up, even for gurus, would one of you care to back-up a couple of messages, and re-state the final consensus in English for us mere mortals ? Only for specific questions, like the following. Too much has been said to figure out what you think is important. Like what gets shared when, in a usual JVM 1.5+ /Tomcat 5.5+ context, with say two parallel instances of Tomcat running on the same host ? (and what is PermGen ?) (The text below refers to Sun HotSpot JVMs; other vendors are likely to be different.) Sharing depends on the JVM mode. If you're running a -client version of the JVM, then some loaded classes are shared across JVM instances. Exactly which classes are shared is not completely clear, but it's likely only those the JVM has control over, such as ones from rt.jar; this needs to be verified. In a -server JVM (and all 64-bit JVMs run -server mode), nothing is shared in the currently released JVMs. It's possible this will change in a future JVM, but it's still that way in the Java SE 7 beta that I have. - 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]
Re: Monitoring Tomcat availability in a load balanced capacity
Adam Gordon wrote: See my reply to Hassan. I think setting up a proxy would be overkill, and besides, when running Tomcat in a load-balanced capacity w/ sticky sessions using mod JK, while you can connect directly to the port on which Tomcat is listening for mod JK requests, unless you speak mod JK, it doesn't do anything. I'm glad there is another solution available directly through mod_jk, which I was unaware of. But re-read my earlier attempt maybe. I wasn't trying to tell you to talk to the AJP connector from the front-end. I was trying to tell you to talk to Tomcat's HTTP ports, not to interfere with the load balancing, which I presume applies only to requests coming through the AJP connectors. Like, at the Apache front-end level : Location /tomcat1/are_you_there --- proxy to http://tomcat1:8080/imthere.html /Location Location /tomcat2/are_you_there --- proxy to http://tomcat2:8081/imtheretoo.html /Location Seemed pretty clever to me, as a quick solution. ;-) Maybe due to my lack of knowledge, but I don't really see where the overkill would be. --adam André Warnier wrote: Adam Gordon wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open-source) to achieve this? I don't think you would need a special product to do that, open source or not. On your Apache front-end, it would probably be easy to set up a proxy, which via simple HTTP would proxy just the links you want to either one of your back-end Tomcat HTTP ports. You would need the HTTP Connector active on each Tomcat, but that should already be the case by default. Someone better versed in Apache mod_proxy could help you there. Maybe try the list at [EMAIL PROTECTED] if you don't get more help here. Of course, if you can access your Tomcats directly through their own HTTP ports, then you don't even need that. I'm just assuming you cannot. - 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] - 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 threads, II
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 André, Christopher Schultz wrote: A few parting thoughts: I knew I was forgetting something: 3. During your 5-minute startup freeze, try taking a few thread dumps (send a QUIT signal to your JVM) and seeing what the app is doing. Maybe it's just taking forever to parse that big old XML document, but it could be something else entirely. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbUQwACgkQ9CaO5/Lv0PAL+QCdFG5HdLVeEnRd2kFUoE6BBmRE 0iQAnRr3BJxC/cMN5tmEgKB+bEIR1VSA =zqaM -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]
Re: Tomcat threads, II
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 André, At the risk of repeating things said by others... André Warnier wrote: We have an old clunker PC (Pentium II, 512 Mb Ram, average ATA disks), which we use to test some applications (not only Java/Tomcat). Based upon this hardware configuration, things are going to suck no matter what else you do. Just bear that in mind going forward. -Xmx256M [snip] 6226 tomcat55 25 0 506m 191m 10m S 0.0 37.9 140:26.15 java Interesting that the JVM grows to nearly twice the size of the maximum heap that you gave to it. If it performs okay, then I wouldn't worry too much about that, but I'm surprised that the total virtual size is so big given your (relatively) small maximum heap. Now, if I stop and restart Tomcat, for something like 6 minutes after that, the same top display shows this kind of thing : (There are 4 consecutive snapshots here, taken at more or less regular intervals during the 6 minutes) [snipped top output showing large memory use] In other words, while this application is being loaded, our Tomcat and the whole system are totally unresponsive for about 5 minutes. When you say the whole system, do you mean that you can't get other services to respond? What about something simple like 'ls' on a command-line? Is the whole machine thrashing or is it just that Tomcat appears dead for 5 minutes or so? I agree with your assessment that your application is at fault; neither Java nor Tomcat are the problem, here. Now my questions are of the kind : Our production servers are ASP servers, where several customers would be using this same application, each customer with its own 25 Mb XML file of data. They are more powerful servers, but if I have 5 customers and these things compete with one another for memory or resources, I could have a server that is unresponsive for a hour maybe at start. You are absolutely right to be considering the scalability of your application, and I would be worried, too. The good news is that web applications spend most of their time running and very little of it initializing themselves. ;) So basically, I am asking if there are any parameters I can vary for the application startup or Tomcat in general, to evaluate the behaviour under different circumstances Nope. If the JVM and Tomcat startup quickly (15 seconds is just fine on that hardware) then the only thing you could do to help your application is to optimize the initialization. Actually, before I say never, you might want to check on two things: 1. DNS settings. Especially when parsing XML (which often requires looking up a DTD or XML Schema file on a remote server), you might be hitting a problem where your DNS resolver is taking a long time, but finally succeeding (which is why you don't see any errors). This was happening to us when our hosting provider took a DNS server out of service without telling us: our lookups against our primary DNS server were timing out (after tens of seconds), but the secondary server worked right away. So, we had to wait for the primary to time out before getting an instant response. The result was that most DNS lookups took forever and it was a simple DNS configuration fix. 2. Cryptographic entropy. If your application ultimately uses /dev/random for random numbers, you may be running out of entropy and your application may be blocking during startup waiting for more. You can modify your JVM configuration to use /dev/urandom which will not block in these situations. Most recent JVMs are rigged to use /dev/urandom on Linux and I don't suspect that this is your problem. [Should I] put more RAM in the server[?] Always! ;) or if I should lower or raise the amount of memory available to Tomcat (and how), etc. This is very application-specific. If you aren't running out of memory, there's no reason to increase your heap size. If you set your heap too large, you'll end up with lots of swapping which will kill your performance. I am also a bit surprised about the amounts I see in terms of memory usage, but not being an expert, I have not really anything to compare them with. It's just that these java applications seem very hungry in memory, if what is shown is really what they are using. For comparison, we have other applications running on that server, of comparable complexity, and they use 10-15 Mb apiece. Just remember a few things about your application: 1. Java is a memory pig 2. XML is a memory pig (at least during parsing) The faster you can throw String objects out of memory, the better. (A complete digression here: I hope this has been fixed, but old DOM parsers used to do this when you called element.getText() (or whatever the equivalent is): public String getText() { return new String(wholeDocument.substring(start, end)); } This returns a piece of the whole XML document. That doesn't sound like a bad idea until you consider how Java's String.substring works. The String class
Re: Monitoring Tomcat availability in a load balanced capacity
You mentioned you just upgraded your MS SQL. Is it possible that the default encoding changed? It should be using UTF-8. Can you check that? On Nov 12, 2008, at 4:48 PM, André Warnier wrote: Adam Gordon wrote: See my reply to Hassan. I think setting up a proxy would be overkill, and besides, when running Tomcat in a load-balanced capacity w/ sticky sessions using mod JK, while you can connect directly to the port on which Tomcat is listening for mod JK requests, unless you speak mod JK, it doesn't do anything. I'm glad there is another solution available directly through mod_jk, which I was unaware of. But re-read my earlier attempt maybe. I wasn't trying to tell you to talk to the AJP connector from the front-end. I was trying to tell you to talk to Tomcat's HTTP ports, not to interfere with the load balancing, which I presume applies only to requests coming through the AJP connectors. Like, at the Apache front-end level : Location /tomcat1/are_you_there --- proxy to http://tomcat1:8080/imthere.html /Location Location /tomcat2/are_you_there --- proxy to http://tomcat2:8081/imtheretoo.html /Location Seemed pretty clever to me, as a quick solution. ;-) Maybe due to my lack of knowledge, but I don't really see where the overkill would be. --adam André Warnier wrote: Adam Gordon wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/ k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open- source) to achieve this? I don't think you would need a special product to do that, open source or not. On your Apache front-end, it would probably be easy to set up a proxy, which via simple HTTP would proxy just the links you want to either one of your back-end Tomcat HTTP ports. You would need the HTTP Connector active on each Tomcat, but that should already be the case by default. Someone better versed in Apache mod_proxy could help you there. Maybe try the list at [EMAIL PROTECTED] if you don't get more help here. Of course, if you can access your Tomcats directly through their own HTTP ports, then you don't even need that. I'm just assuming you cannot. - 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] - 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: Monitoring Tomcat availability in a load balanced capacity
On Wed, Nov 12, 2008 at 1:15 PM, Adam Gordon [EMAIL PROTECTED] wrote: See my reply to Hassan. I think setting up a proxy would be overkill, and besides, when running Tomcat in a load-balanced capacity w/ sticky sessions using mod JK, while you can connect directly to the port on which Tomcat is listening for mod JK requests, unless you speak mod JK, it doesn't do anything. Did you not see my earlier post? It sounds like you should be able to do what you want without any configuration changes at all. -Dave - 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: Monitoring Tomcat availability in a load balanced capacity
Ooops, sorry. I meant this to go to someone else... On Nov 12, 2008, at 5:06 PM, Robert Koberg wrote: You mentioned you just upgraded your MS SQL. Is it possible that the default encoding changed? It should be using UTF-8. Can you check that? On Nov 12, 2008, at 4:48 PM, André Warnier wrote: Adam Gordon wrote: See my reply to Hassan. I think setting up a proxy would be overkill, and besides, when running Tomcat in a load-balanced capacity w/ sticky sessions using mod JK, while you can connect directly to the port on which Tomcat is listening for mod JK requests, unless you speak mod JK, it doesn't do anything. I'm glad there is another solution available directly through mod_jk, which I was unaware of. But re-read my earlier attempt maybe. I wasn't trying to tell you to talk to the AJP connector from the front-end. I was trying to tell you to talk to Tomcat's HTTP ports, not to interfere with the load balancing, which I presume applies only to requests coming through the AJP connectors. Like, at the Apache front-end level : Location /tomcat1/are_you_there --- proxy to http://tomcat1:8080/imthere.html /Location Location /tomcat2/are_you_there --- proxy to http://tomcat2:8081/imtheretoo.html /Location Seemed pretty clever to me, as a quick solution. ;-) Maybe due to my lack of knowledge, but I don't really see where the overkill would be. --adam André Warnier wrote: Adam Gordon wrote: We're running two Tomcat (5.5.16) instances in a load-balanced capacity behind an Apache server (2.0.55 w/ mod j/k 1.2.14). We'd like to set up some sort of monitoring that would allow us to not just check to see if the Tomcat Java processes are still running (that's easy) but to actually connect to each web server (either independently or via the load-balancer) and verify that a certain page can be returned. Since we're connecting to Tomcat via an Apache load-balancer, we don't know of a way to force the load-balancer to go to a certain Tomcat instance. Additionally, we don't know how to speak mod j/k so we can't fake a direct connection to each Tomcat instance. Does anyone know of a way or a product (commercial or open- source) to achieve this? I don't think you would need a special product to do that, open source or not. On your Apache front-end, it would probably be easy to set up a proxy, which via simple HTTP would proxy just the links you want to either one of your back-end Tomcat HTTP ports. You would need the HTTP Connector active on each Tomcat, but that should already be the case by default. Someone better versed in Apache mod_proxy could help you there. Maybe try the list at [EMAIL PROTECTED] if you don't get more help here. Of course, if you can access your Tomcats directly through their own HTTP ports, then you don't even need that. I'm just assuming you cannot. - 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] - 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] - 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: Get Security subject from Tomcat
On Wed, Nov 12, 2008 at 4:06 PM, Caldarale, Charles R [EMAIL PROTECTED] wrote: From: Arash Bizhan zadeh [mailto:[EMAIL PROTECTED] Subject: Get Security subject from Tomcat Is there is was I can get the authenticated User from inside my servlet/filter? Perhaps reading the Servlet spec or the APIs would help: http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServletRequest.html#getUserPrincipal()http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServletRequest.html#getUserPrincipal%28%29 Sure it might help. Reading my mail would have helped too. I need the Subject not the principal. Please reply directly, I am not subscribed. Then I guess you won't see the response... - 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] -- The dirtiest book of all is the expurgated book. Walt Whitman
Re: Tomcat threads, II
André Warnier wrote: Now that I have (with your help) established some basic facts, I have a practical case for analysis. We have an old clunker PC (Pentium II, 512 Mb Ram, average ATA disks), which we use to test some applications (not only Java/Tomcat). ... Now, if I stop and restart Tomcat, for something like 6 minutes after that, the same top display shows this kind of thing : (There are 4 consecutive snapshots here, taken at more or less regular intervals during the 6 minutes) Comments on your situation and top snapshots: - you're low on memory, but not paging heavily yet; you're likely taking some kind of hit from not having enough memory for a decent buffer cache (disk cache), though - your swap usage remains constant to 7k (on which I base my claim that you're not paging heavily) - CPU usage, at least based on these snapshots, is almost pure user-mode CPU use, so there's little else happening than some computation internal to the application/Tomcat - looks like you could do with slightly smaller Java heap size, at least at this point of execution -- but it also could be that a smaller heap would get you an OutOfMemoryError later on - based on the fact that 'top' shows only 188M memory resident of the total 482M address space, the application is not even close to heap size (thus GC limits), but you could verily the GC issue by enabling verbose garbage collection for your JVM (with -verbose:gc flag to Java startup parameters) - you could also see which of the threads are taking time, with ps -fLp pid-of-tomcat-java (and getting the thread information f.ex. by getting a thread dump with kill -QUIT pid-of-tomcat-java to catalina.out In other words, while this application is being loaded, our Tomcat and the whole system are totally unresponsive for about 5 minutes. Whole system - as in ls from command line taking ages to complete when the startup is running? If so, then this could indicate a bottleneck in disk I/O (and as such, would be, partially at least, in line with my comment on not having enough memory for a buffer cache). However, this could also contradict my assumption that paging is not the issue. If it's a memory issue, you could help it a bit by lowering the heap size limit for the Tomcat JVM (but therein lies the risk of getting an OOME). However, as you noted, the machine is weak in terms of memory capacity and CPU power -- and I would suspect in hard drive speed just as well. And what it is you're doing: loading a largish file from the drive (while having minimal amount of memory available for buffer cache), and doing some memory- and CPU-intensive processing (XML parsing) on it. So, I would encourage you to have a look at the start times of the application on one of your production servers, preferably at a time of low traffic. In case of hangs, it might be good to have a command-line ready with kill -9 pid-of-tomcat-java to forcibly end the Tomcat process (however I strongly suspect you're not going to need it). -- ..Juha - 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: Get Security subject from Tomcat
From: Arash Bizhan zadeh [mailto:[EMAIL PROTECTED] Subject: Re: Get Security subject from Tomcat Sure it might help. Reading my mail would have helped too. I need the Subject not the principal. O.k., I'm confused. If you're looking for the user name, then the java.security.Principal returned by getUserPrincipal() has a getName() method. If that's not what you mean by Subject, what is? - 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]
Re: Get Security subject from Tomcat
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Arash, Arash Bizhan zadeh wrote: Sure [reading the servlet API] might help. Reading my mail would have helped too. I need the Subject not the principal. Ouch. You're gonna get the cold shoulder with that kind of snarkiness. Your original message said authenticated user in the body. A quick look through Tomcat's source code shows: $ grep SUBJECT_ATTR `find java/ -name *.java` java/org/apache/catalina/connector/Request.java: session.getAttribute(Globals.SUBJECT_ATTR) == null) { java/org/apache/catalina/connector/Request.java: session.setAttribute(Globals.SUBJECT_ATTR, subject); java/org/apache/catalina/security/SecurityUtil.java: (Subject)session.getAttribute(Globals.SUBJECT_ATTR); java/org/apache/catalina/security/SecurityUtil.java: session.setAttribute(Globals.SUBJECT_ATTR, subject); java/org/apache/catalina/session/StandardSession.java: Globals.SUBJECT_ATTR java/org/apache/catalina/Globals.java:public static final String SUBJECT_ATTR = Taking a quick look at these classes shows that this: getSession().getAttribute(Globals.SUBJECT_ATTR); should work. Of course, there's always a chance that the subject is null. In most cases in the code, when the Subject is null, a new Subject object is created with no arguments and thrown into the session under the Globals.SUBJECT_ATTR key. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbWgUACgkQ9CaO5/Lv0PB7ywCfWsw8lOmT2rg85wddJ+n3C6xL PWsAn1KdKrcv+mErYjOjaNMAonGYE/yS =nnOG -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]
Re: Tomcat threads, II
Christopher Schultz schrieb am 12.11.2008 um 16:42:06 (-0500): André Warnier wrote: In other words, while this application is being loaded, our Tomcat and the whole system are totally unresponsive for about 5 minutes. 1. DNS settings. Especially when parsing XML (which often requires looking up a DTD or XML Schema file on a remote server), you might be hitting a problem where your DNS resolver is taking a long time, but finally succeeding (which is why you don't see any errors). If this is happening here (and it may be), consider using XML catalogs, which are simply local filesystem caches of XML/SGML resources. (On Debian, IIRC, the package is called xml-base.) Waiting on the net, however, wouldn't account for your server's unresponsiveness. Processing 25 MB of XML in memory (as opposed to by stream), as in DOM or XSL, may easily consume 200 MB of RAM. If it's XSL and not done properly, five minutes of CPU hogging are easily attainable :-) I'd ask the vendor to explain what's going on. Michael Ludwig - 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 threads
André André Warnier wrote: (and what is PermGen ?) No one else seemed to answer this. PermGen is the chunk of memory which is allocated to the JVM in which to hold the 'prototypes' of the class files used. For a large web app with lots of classes (NOT object) it is common to have to radically increase this over the default (which, from memory, is 64M, to 192M or even 256M to taste.) It is possible to write a Java web application in such a way that during application reload some of the PermGen is not released. This is what we call a 'bug' but it can be difficult and frustrating to locate. Try Googling -XX:MaxPermSize for more details. Regards Alan - 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: Get Security subject from Tomcat
On Wed, Nov 12, 2008 at 5:34 PM, Christopher Schultz [EMAIL PROTECTED] wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Arash, Arash Bizhan zadeh wrote: Sure [reading the servlet API] might help. Reading my mail would have helped too. I need the Subject not the principal. Ouch. You're gonna get the cold shoulder with that kind of snarkiness. Your original message said authenticated user in the body. A quick look through Tomcat's source code shows: $ grep SUBJECT_ATTR `find java/ -name *.java` java/org/apache/catalina/connector/Request.java: session.getAttribute(Globals.SUBJECT_ATTR) == null) { java/org/apache/catalina/connector/Request.java: session.setAttribute(Globals.SUBJECT_ATTR, subject); java/org/apache/catalina/security/SecurityUtil.java: (Subject)session.getAttribute(Globals.SUBJECT_ATTR); java/org/apache/catalina/security/SecurityUtil.java: session.setAttribute(Globals.SUBJECT_ATTR, subject); java/org/apache/catalina/session/StandardSession.java: Globals.SUBJECT_ATTR java/org/apache/catalina/Globals.java:public static final String SUBJECT_ATTR = Taking a quick look at these classes shows that this: getSession().getAttribute(Globals.SUBJECT_ATTR); Tomcat 5.5.26, returns null as subject. I have security constraints on web.xml and developed a JAAS module to login, so I guess the subject is not null. Any suggestions? should work. Of course, there's always a chance that the subject is null. In most cases in the code, when the Subject is null, a new Subject object is created with no arguments and thrown into the session under the Globals.SUBJECT_ATTR key. - -chris -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkkbWgUACgkQ9CaO5/Lv0PB7ywCfWsw8lOmT2rg85wddJ+n3C6xL PWsAn1KdKrcv+mErYjOjaNMAonGYE/yS =nnOG -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] -- The dirtiest book of all is the expurgated book. Walt Whitman