|
From: Leif M. <le...@ta...> - 2005-03-23 22:19:58
|
Didier,
The problem is that the Wrapper is doing its job of correctly
launching a JVM and
then shutting down when that application is complete. The JWS app is
launching an
external child javaw process to actually run your application. This
second JVM is
not visible to the Wrapper and is left running happily.
A few users have asked similar questions this year, but I have not
yet come up
with a good solution for handling this kind of thing from the scope of
the Wrapper.
The quickest solution for you would be to figure out the command
generated by
JWS to launch that second JVM, then create a wrapper.conf file to have
the Wrapper
launch it directly.
Another solution would be to make the parent JVM stay alive for the
life of the
child, but this gets complicated when you start thinking about the
possibility of either
JVM crashing of freezing up.
Cheers,
Leif
did...@vo... wrote:
>Hi,
>
>I'm using the Java Service Wrapper to launch a Java Web Start application as a NT Service (W2000). To do so, I followed the instructions given here :
><http://www.seajug.org/vqwiki/jsp/Wiki?JavaWebStartTips>
>
>My application runs fine, but in the Service Panel, my service is showed as 'not running'.
>I investigated a bit and found out that :
>- the wrapper launches a JVM for JWS
>- JWS launches another JVM for my application
>- the JWS JVM ends normally and my application still runs fine
>- the wrapper ends and the service is showed as 'not running'
>- my application is still running as a 'javaw.exe' process in the windows task manager.
>
>The fact that the service is not showed as 'running' is confusing. The admin may want to start my application again and again.
>So, is there a way to avoid this behavior?
>
>To illustrate this, here is the output for a console execution :
>
>C:\bin\wrapper>Wrapper.exe -c wrapper.conf
>wrapper | --> Wrapper Started as Console
>wrapper | Using system timer.
>wrapperp | server listening on port 1777.
>wrapper | Launching a JVM...
>wrapper | command: "C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -Djnlpx.deployment.system.home="C:\WINNT\Sun\Java\Deployment" -Djnlpx.heapsize=NULL,NULL -DtrustProxy?=true -Djnlpx.deployment.user.home="C:\Documents and Settings\dduquennoy\Application Data\Sun\Java\Deployment" -Djnlpx.jvm="C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -Djava.security.policy="file:/C:\batch/wrapper.policy" -Djnlpx.home="C:\Program Files\Java\j2re1.4.2_04\javaws" -Dwrapper.home="C:\batch" -Djnlpx.remove=false -Djnlpx.offline=true -Xms15m -Xmx15m -Djava.library.path="." -classpath "wrapper.jar;C:\Program Files\Java\j2re1.4.2_04\javaws\javaws.jar;C:\Program Files\Java\j2re1.4.2_04\javaws\javaws-l10n.jar" -Dwrapper.key="IQDTkRUQsJMB39d5" -Dwrapper.port=1777 -Dwrapper.debug="TRUE" -Dwrapper.use_system_time="TRUE" -Dwrapper.version="3.1.2" -Dwrapper.native_library="wrapper" -Dwrapper.cpu.timeout="10"
>-Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp com.sun.javaws.Main http://JWSServ/JWSProvider/myApp.jnlp
>wrapper | JVM started (PID=1692)
>jvm 1 | WrapperManager class initialized by thread: main Using classloader: sun.misc.Launcher$AppClassLoader@1ff5ea7
>jvm 1 | Wrapper Manager: JVM #1
>jvm 1 | Wrapper Manager: Registering shutdown hook
>jvm 1 | Wrapper Manager: Using wrapper
>jvm 1 | Loaded native library: wrapper.dll
>jvm 1 | Calling native initialization method.
>jvm 1 | Initializing WrapperManager native library.
>jvm 1 | Java Executable: C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe
>jvm 1 | Windows version: 5.0.2195
>jvm 1 | Java Version : 1.4.2_04-b05 Java HotSpot(TM) Client VM
>jvm 1 | Java VM Vendor : Sun Microsystems Inc.
>jvm 1 |
>jvm 1 | Wrapper (Version 3.1.2) http://wrapper.tanukisoftware.org
>jvm 1 |
>jvm 1 | WrapperManager.start(org.tanukisoftware.wrapper.WrapperSimpleApp@8965fb, args["http://JWSServ/JWSProvider/myApp.jnlp"]) called by thread: main
>jvm 1 | Open socket to wrapper...
>jvm 1 | Opened Socket
>jvm 1 | Send a packet KEY : IQDTkRUQsJMB39d5
>jvm 1 | handleSocket(Socket[addr=/127.0.0.1,port=1777,localport=2815])
>wrapperp | accepted a socket from 127.0.0.1 on port 2815
>wrapperp | read a packet KEY : IQDTkRUQsJMB39d5
>wrapper | Got key from JVM: IQDTkRUQsJMB39d5
>wrapperp | send a packet LOW_LOG_LEVEL : 1
>wrapperp | send a packet PING_TIMEOUT : 30
>wrapper | Start Application.
>wrapperp | send a packet START : start
>jvm 1 | Received a packet LOW_LOG_LEVEL : 1
>jvm 1 | Wrapper Manager: LowLogLevel from Wrapper is 1
>jvm 1 | Received a packet PING_TIMEOUT : 30
>jvm 1 | Wrapper Manager: PingTimeout from Wrapper is 30000
>jvm 1 | Received a packet START : start
>jvm 1 | calling listener.start()
>jvm 1 | WrapperSimpleApp: start(args)
>jvm 1 | WrapperSimpleApp: invoking main method
>jvm 1 | WrapperSimpleApp: main method completed
>jvm 1 | WrapperSimpleApp: start(args) end. Main Completed=true, exitCode=null
>jvm 1 | returned from listener.start()
>jvm 1 | Send a packet STARTED :
>wrapperp | read a packet STARTED :
>wrapper | JVM signalled that it was started.
>wrapperp | send a packet PING : ping
>jvm 1 | Received a packet PING : ping
>jvm 1 | Send a packet PING : ok
>wrapperp | read a packet PING : ok
>wrapper | Got ping response from JVM
>jvm 1 | Wrapper Manager: ShutdownHook started
>jvm 1 | WrapperManager.stop(0) called by thread: Wrapper-Shutdown-Hook
>jvm 1 | Send a packet STOP : 0
>wrapperp | read a packet STOP : 0
>wrapper | JVM requested a shutdown. (0)
>wrapper | wrapperStopProcess(0) called.
>wrapper | Sending stop signal to JVM
>wrapperp | send a packet STOP : NULL
>jvm 1 | Received a packet STOP :
>jvm 1 | Thread, Wrapper-Shutdown-Hook, handling the shutdown process.
>jvm 1 | calling listener.stop()
>jvm 1 | returned from listener.stop()
>jvm 1 | Send a packet STOPPED : 0
>wrapperp | read a packet STOPPED : 0
>wrapper | JVM signalled that it was stopped.
>jvm 1 | Closing socket.
>jvm 1 | Closed socket: java.net.SocketException: socket closed
>wrapperp | socket read no code (closed?).
>jvm 1 | Server daemon shut down
>jvm 1 | Wrapper Manager: ShutdownHook complete
>wrapper | JVM process exited with a code of 0, leaving the wrapper exit code set to 0.
>wrapper | JVM exited normally.
>wrapper | <-- Wrapper Stopped
>
>C:\bin\wrapper>
>
>Any hint welcome,
>
>Didier D
>
>
|