You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Shamshad Ansari <in...@gmail.com> on 2008/06/15 08:51:24 UTC

JNI and Tomcat problem

Hi,
I have a web application deployed in Tomcat. On a click on button on
the web browser, it calls a servlet which in turn calls a native
function written in C. First time when tomcat is started and I run the
application, it works fine. The second clicking the same button causes
the server to crash with the following error message.
I have placed the .dll file in $Cateline_Home\shared\lib
Tomcat version: 6.0
When I restart the server, it works fine the first time and second
time, it crashes and stops again.

The error log is:
-------------------------------------------------------------------------
Jun 15, 2008 2:39:13 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: accept:
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:642)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:602)
        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:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
java.util.logging.ErrorManager: 1
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
java.lang.NullPointerException
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at org.apache.juli.FileHandler.publish(FileHandler.java:137)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.util.logging.Logger.log(Logger.java:472)
        at java.lang.Thread.run(Thread.java:619)
        at java.util.logging.Logger.doLog(Logger.java:494)
Jun 15, 2008 2:39:13 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
        at java.util.logging.Logger.logp(Logger.java:694)
SEVERE: Socket accept failed
        at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:167)
java.net.SocketException: socket closed
        at org.apache.juli.logging.DirectJDKLog.warn(DirectJDKLog.java:127)
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:671)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at java.lang.Thread.run(Thread.java:619)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
        at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:310)
        at java.lang.Thread.run(Thread.java:619)
Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Jun 15, 2008 2:39:13 AM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-80
Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
        at java.net.ServerSocket.accept(ServerSocket.java:421)
        at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
        at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
        at org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)
Jun 15, 2008 2:39:13 AM org.apache.catalina.connector.Connector pause
SEVERE: Protocol handler pause failed
java.net.SocketException: Successful WSAStartup not yet performed: create
        at java.net.Socket.createImpl(Socket.java:388)
        at java.net.Socket.<init>(Socket.java:362)
        at java.net.Socket.<init>(Socket.java:209)
        at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:486)
        at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
        at org.apache.jk.server.JkMain.pause(JkMain.java:681)
        at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
        at org.apache.catalina.connector.Connector.pause(Connector.java:1073)
        at org.apache.catalina.core.StandardService.stop(StandardService.java:563)
        at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
        at org.apache.catalina.startup.Catalina.stop(Catalina.java:628)
        at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:671)
Jun 15, 2008 2:39:14 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Jun 15, 2008 2:39:14 AM org.apache.catalina.core.StandardWrapper unload
INFO: Waiting for 1 instance(s) to be deallocated
Jun 15, 2008 2:39:15 AM org.apache.catalina.core.StandardWrapper unload
INFO: Waiting for 1 instance(s) to be deallocated
Jun 15, 2008 2:39:16 AM org.apache.catalina.core.StandardWrapper unload
INFO: Waiting for 1 instance(s) to be deallocated
class engine.common.EmrAppStart: INFO: Context is Destroyed
Jun 15, 2008 2:39:16 AM org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-80
--------------------------------------------------------------------------------
I appreciate if you could provide any information about how to correct
this problem.
Thank you.
--Sam

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


Re: JNI and Tomcat problem

Posted by Johnny Kewl <jo...@kewlstuff.co.za>.
----- Original Message ----- 
From: "Shamshad Ansari" <in...@gmail.com>
To: <us...@tomcat.apache.org>
Sent: Sunday, June 15, 2008 8:51 AM
Subject: JNI and Tomcat problem


> Hi,
> I have a web application deployed in Tomcat. On a click on button on
> the web browser, it calls a servlet which in turn calls a native
> function written in C. First time when tomcat is started and I run the
> application, it works fine. The second clicking the same button causes
> the server to crash with the following error message.
> I have placed the .dll file in $Cateline_Home\shared\lib
> Tomcat version: 6.0
> When I restart the server, it works fine the first time and second
> time, it crashes and stops again.
>
> The error log is:
> -------------------------------------------------------------------------
> Jun 15, 2008 2:39:13 AM org.apache.catalina.core.StandardServer await
> SEVERE: StandardServer.await: accept:
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.catalina.core.StandardServer.await(StandardServer.java:389)
>        at org.apache.catalina.startup.Catalina.await(Catalina.java:642)
>        at org.apache.catalina.startup.Catalina.start(Catalina.java:602)
>        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:597)
>        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket 
> acceptConnections
> WARNING: Exception executing accept
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.lang.Thread.run(Thread.java:619)
> Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket 
> acceptConnections
> WARNING: Exception executing accept
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
> java.util.logging.ErrorManager: 1
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
> java.lang.NullPointerException
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at org.apache.juli.FileHandler.publish(FileHandler.java:137)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.util.logging.Logger.log(Logger.java:472)
>        at java.lang.Thread.run(Thread.java:619)
>        at java.util.logging.Logger.doLog(Logger.java:494)
> Jun 15, 2008 2:39:13 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor 
> run
>        at java.util.logging.Logger.logp(Logger.java:694)
> SEVERE: Socket accept failed
>        at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:167)
> java.net.SocketException: socket closed
>        at org.apache.juli.logging.DirectJDKLog.warn(DirectJDKLog.java:127)
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:671)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at java.lang.Thread.run(Thread.java:619)
>        at 
> org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
>        at 
> org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:310)
>        at java.lang.Thread.run(Thread.java:619)
> Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket 
> acceptConnections
> WARNING: Exception executing accept
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.lang.Thread.run(Thread.java:619)
> Jun 15, 2008 2:39:13 AM org.apache.coyote.http11.Http11Protocol pause
> INFO: Pausing Coyote HTTP/1.1 on http-80
> Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket 
> acceptConnections
> WARNING: Exception executing accept
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.lang.Thread.run(Thread.java:619)
> Jun 15, 2008 2:39:13 AM org.apache.jk.common.ChannelSocket 
> acceptConnections
> WARNING: Exception executing accept
> java.net.SocketException: socket closed
>        at java.net.PlainSocketImpl.socketAccept(Native Method)
>        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>        at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>        at java.net.ServerSocket.accept(ServerSocket.java:421)
>        at 
> org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:306)
>        at 
> org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:660)
>        at 
> org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(ChannelSocket.java:870)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>        at java.lang.Thread.run(Thread.java:619)
> Jun 15, 2008 2:39:13 AM org.apache.catalina.connector.Connector pause
> SEVERE: Protocol handler pause failed
> java.net.SocketException: Successful WSAStartup not yet performed: create
>        at java.net.Socket.createImpl(Socket.java:388)
>        at java.net.Socket.<init>(Socket.java:362)
>        at java.net.Socket.<init>(Socket.java:209)
>        at 
> org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:486)
>        at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
>        at org.apache.jk.server.JkMain.pause(JkMain.java:681)
>        at 
> org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
>        at 
> org.apache.catalina.connector.Connector.pause(Connector.java:1073)
>        at 
> org.apache.catalina.core.StandardService.stop(StandardService.java:563)
>        at 
> org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
>        at org.apache.catalina.startup.Catalina.stop(Catalina.java:628)
>        at 
> org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:671)
> Jun 15, 2008 2:39:14 AM org.apache.catalina.core.StandardService stop
> INFO: Stopping service Catalina
> Jun 15, 2008 2:39:14 AM org.apache.catalina.core.StandardWrapper unload
> INFO: Waiting for 1 instance(s) to be deallocated
> Jun 15, 2008 2:39:15 AM org.apache.catalina.core.StandardWrapper unload
> INFO: Waiting for 1 instance(s) to be deallocated
> Jun 15, 2008 2:39:16 AM org.apache.catalina.core.StandardWrapper unload
> INFO: Waiting for 1 instance(s) to be deallocated
> class engine.common.EmrAppStart: INFO: Context is Destroyed
> Jun 15, 2008 2:39:16 AM org.apache.coyote.http11.Http11Protocol destroy
> INFO: Stopping Coyote HTTP/1.1 on http-80
> --------------------------------------------------------------------------------
> I appreciate if you could provide any information about how to correct
> this problem.
> Thank you.
> --Sam

Sam, I have no idea... but just some thoughts.
I dont think it really matters where you put the DLL, as long as its not in 
webapps, because they reload.

What does this DLL do?
It almost looks like the DLL is closing the windows sockets... does the DLL 
do TCP communications?
A guess is that the DLL is stealing TC's sockets... not much help, sorry.

Just try this... in desperation
Start TC... run netstat -noa... and you should see TC bound to a port.
Then run it once and do it again... and see what is bound to that port after 
the run... if its the DLL, its stolen the socket from TC, somehow?

So when TC tries to get another connection... it crashes... I think

Good luck...

---------------------------------------------------------------------------
HARBOR : http://www.kewlstuff.co.za/index.htm
The most powerful application server on earth.
The only real POJO Application Server.
See it in Action : http://www.kewlstuff.co.za/cd_tut_swf/whatisejb1.htm
--------------------------------------------------------------------------- 


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