wood burning stoves 2.0*
The moose likes Tomcat and the fly likes Tomcat goes down Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Products » Tomcat
Bookmark "Tomcat goes down" Watch "Tomcat goes down" New topic
Author

Tomcat goes down

Danish Shaukat
Ranch Hand

Joined: Nov 16, 1999
Posts: 340
Hi !

I have an account on a server (Apache/Tomcat 4.1).
Tomcat automatically goes down after every few days. So all my applications go down as well. I just restart tomcat and it starts working again for afew days.

Can anyone suggest what can be the possible reason for this.

Tech support is not of much help...

Danish
Mike Curwen
Ranch Hand

Joined: Feb 20, 2001
Posts: 3695

there are just too many possibilities to start enumerating them.

Is there anything else you can tell us?

Are there error logs? If so, what is in them?
What do you mean by "go down"? (OutOfMemoryError? the tomcat process is completely gone? the process is there, but the site gives 404 or 500?)

Have you tried the same code on a local instance of tomcat, rather than a hosted instance?
Danish Shaukat
Ranch Hand

Joined: Nov 16, 1999
Posts: 340
Mike,

Thanks for replying. I've looked up the logs and I guess this is the error message.

Before you go through it, i'll give you some background info. This message appears when I enter data in a form and hit enter. The servlet needs to communicate with the database on this action, connection has to be borrowed from the pool etc.

If you read the first few lines it may seem that this is a database problem. But I think that the root cause is something else. Probably tomcat has stopped and thats why a connection with the database cannot be established.

BTW I usually get this problem after every few weeks. I just restart tomcat and then things work fine for a few weeks again.

All applications are first tested on local server and then deployed.

And when I hit enter I get this exception on the web page.

Danish

========
--- SignInServlet for Registration Application ---


UserID: danish
Password: hello
Borrowing connection from the Connection Pool
Executing query

Unable to communicate with database.
An I/O error has occured while flushing the output - Exception: java.net.SocketException: Broken pipe
Stack Trace:

java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:69)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:127)
at org.postgresql.PG_Stream.flush(PG_Stream.java:352)
at org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:159)
at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:70)
at org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:505)
at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:320)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
at org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:153)
at org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:141)
at com.smartmicro.server.myaccount.SignInServletWeb.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:458)
at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:551)
at java.lang.Thread.run(Thread.java:536)
End of Stack Trace

Returning connection to the Connection Pool

Stopping service Tomcat-Standalone
Catalina.start: LifecycleException: Error creating server socket (java.net.BindException): java.net.BindException: Address already in use
LifecycleException: Error creating server socket (java.net.BindException): java.net.BindException: Address already in use
at org.apache.catalina.connector.warp.WarpConnector.initialize(Unknown Source)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:579)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2245)
at org.apache.catalina.startup.Catalina.start(Catalina.java:511)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
----- Root Cause -----
java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:331)
at java.net.ServerSocket.bind(ServerSocket.java:318)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:141)
at org.apache.catalina.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:147)
at org.apache.catalina.connector.warp.WarpConnector.initialize(Unknown Source)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:579)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2245)
at org.apache.catalina.startup.Catalina.start(Catalina.java:511)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Catalina.stop: LifecycleException: This server has not yet been started
LifecycleException: This server has not yet been started
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2212)
at org.apache.catalina.startup.Catalina.start(Catalina.java:543)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)
Stopping service Tomcat-Apache
Starting service Tomcat-Standalone
Apache Tomcat/4.1.18
Starting service Tomcat-Apache
Apache Tomcat/4.1.18
Rajendar Goud
Ranch Hand

Joined: Mar 06, 2002
Posts: 220
Hi Danish and Mike,
I too am facing the same problem. i am working on a application running on tomcat 3.22.i thought that this is something to do with database connections. as tomcat doesnt have connection pooling as such, i implement a thread that refreshes the connection after an interval. But the tomcat throws in 'java.net.SocketException: Broken pipe' after few operations.
More over ,iam not able to simulate this when running on my local m/c on NT.its happening on tomcat running on linux partition and the database is DB2. Any help is highly appreciated.

Rgds,
Rajendar
Mike Curwen
Ranch Hand

Joined: Feb 20, 2001
Posts: 3695

So this part of the stack trace:

Returning connection to the Connection Pool

Stopping service Tomcat-Standalone
Catalina.start: LifecycleException: Error creating server socket (java.net.BindException): java.net.BindException: Address already in use


The 'stopping' message occurs immediately after the 'returning' message, with no additional help from you? (I mean that stopping message is not as a result of you calling the shutdown script?)

By chance do you have System.exit() in any of your code?

Are you using DBCP for your pooling?
Danish Shaukat
Ranch Hand

Joined: Nov 16, 1999
Posts: 340
After returning connection to the pool, I am not calling any shutdown script.

I am not using System.exit() in my code.

I am using connection pool from Marty Hall's web site.
[ June 09, 2004: Message edited by: Danish Shaukat ]
 
jQuery in Action, 2nd edition
 
subject: Tomcat goes down