I'd like to add a little bit specifically around setting the parameters for a 
Windows service.

It can be done, but as Chris pointed out, it's not easy. There are at least 2 
ways I can think of off the top of my head to change the Windows service 
properties:
1. Write JNI code to call the appropriate Windows DLLs to access and update the 
registry. Not fun... and potentially problematic because of security 
requirements.
2. Use Java to write a Windows .reg file that can be imported using an OS call 
to import the file. This is almost trivial to do but it's technically a bit of 
a kludge and has the same security problems (albeit a bit simpler) than option 
1.

FYI: The advantage of a Windows service is that it can be made to start when 
the OS starts, which can be really handy... it can also be a pain depending on 
your requirements :).

The option we use is calling VBScript to do the registry changes, but that 
doesn't involve Java at all.

Bill

-----Original Message-----
From: Christopher Schultz [mailto:ch...@christopherschultz.net] 
Sent: June 30, 2011 10:10 PM
To: Tomcat Users List
Subject: Re: Set Java VM arguments programmatically in Tomcat

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Anand,

On 6/30/2011 6:18 PM, Anand HS wrote:
> Basically I would like not to use any batch scripts ( in Windows ) to set
> CATALINA_OPTS, JAVA_OPTS etc.. , instead would like to do it through a
> custom Java program and then hook up.

You can do this, except that your Java program must launch /a second
JVM/ in order to set properties -- specifically ones such as heap sizes,
etc.

> To this effect, I was wondering if
> there is a way to extend Bootstrap class of Tomcat to achieve it.

No. By the time the Bootstrap code is called, the heap has been
configured and it's too late.

> That said, I'm not sure if it is a recommended way to do it even since I was
> trying to just explore if batch files are the only options for me to feed in
> environment variables to Tomcat and Java.

If you install Tomcat as a service, you can set those parameters in the
service definition (itself a small program that launches the JVM with
the proper parameters) and do anything you want.

But you'll never be able to do this in any practical way through Java code.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4NLJEACgkQ9CaO5/Lv0PDQkwCgpPUIvxzVxB72RHxgdFHUW1aO
LGoAnioYym9HOjaRA5tYH7CKfeKfg/Mk
=4skK
-----END PGP SIGNATURE-----

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


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

Reply via email to