Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Setting a property for System.getProperty()

557 views
Skip to first unread message

RVic

unread,
May 9, 2013, 10:53:34 AM5/9/13
to
I inherited someones mountain of code wherein they use different idioms and ways of doing things than I typically do.

In one instance, there is a line of code:

System.getProperty("cn.env");

which, depending on what machine it is run on, has properties like "production" or "mirror"

Yet, I think this call, System.getProperty(), calls properties from the actual system, like (System.getProperty("user.home") or System.getProperty("file.separator").

So how can I set this on a particular machine (Ubuntu 12 in this case) for a value for cn.env?

Thanks in advance, RVic

lipska the kat

unread,
May 9, 2013, 11:22:21 AM5/9/13
to
Well of course you can use System.setProperty("myprop", "myval");

Or ...

You can set properties when you start your application using the -D
command line switch.

something like

javac Foo.java
java -Dmyprop=myval Foo

in you code you can access these properties like so
System.getProperty("myprop");

This would return the String "myval"

HTH

lipska

--
Lipska the Kat�: Troll hunter, sandbox destroyer
and farscape dreamer of Aeryn Sun

Eric Sosman

unread,
May 9, 2013, 11:33:23 AM5/9/13
to
java -Dcn.env=ZaphodBeeblebrox MyClass

... is one way. See also System.setProperty(), which you could
use in a "launcher" class like

public class Launcher {
public static void main(String[] args) {
// Get a value -- this takes one from the
// environment, but you could get as fancy
// as you like here.
String value = System.getenv("CN_ENV");

// Set the property.
System.setProperty("cn.env", value);

// Run the "real" main() method.
MyClass.main(args);
}
}

--
Eric Sosman
eso...@comcast-dot-net.invalid

RVic

unread,
May 9, 2013, 12:01:03 PM5/9/13
to
I need to set it outside of of the running application, so the -D option is what I need to invoke. However, THis is a war archive running under tomcat, started (in script) with:

sudo service tomcat-$SITE start

How would you invoke the -Dcn.env="mirror" in this?

Thanks for your help here guys! RVic

RVic

unread,
May 9, 2013, 12:14:06 PM5/9/13
to
Well, apparently it IS being set, in /etc/init.d for that file I see:
---------------------------------
JVM_PARAM='-verbose:gc -XX:+PrintGCDetails -Dcn.instance=router -Dcn.env=mirror'

export JVM_PARAM

# Call the common script
/home/cnadmin/scripts/tomcat/tomcat.sh $1
----------------------------------------------------

So I guess it is being set here. I shall go back to the drawing board, apparetnyl what I believed to be the problem may not be the problem. Thanks for your help guys. RVic

markspace

unread,
May 9, 2013, 12:48:49 PM5/9/13
to
Does this actually do anything? I don't think the jvm will treat the
JVM_PARAM variable in a special way. Google at least didn't seem to
come up with anything. So unless the JVM_PARAM is on the invocation
line to tomcat.sh, I don't think anyone is going to see these values.

You might try modifying the tomcat.sh script to dump its parameters to a
file where you can see them, just to verify what's being passed in to
the tomcat instance. There might be a better way too; maybe the ps
command can be induced to dump the command line of a running process.

Arne Vajhøj

unread,
May 9, 2013, 9:51:56 PM5/9/13
to
On 5/9/2013 12:01 PM, RVic wrote:
> I need to set it outside of of the running application, so the -D option is what I need to invoke. However, THis is a war archive running under tomcat, started (in script) with:
>
> sudo service tomcat-$SITE start
>
> How would you invoke the -Dcn.env="mirror" in this?

Typical you would set it in env variable JAVA_OPTS and
then catalina.sh would pick it up.

Arne


Arne Vajhøj

unread,
May 9, 2013, 9:57:26 PM5/9/13
to
The JVM does certainly not do anything itself.

But that tomcat.sh may very well include JVM_PARAM in the
java command line.

For a standard Tomcat download from Apache the env var is
JAVA_OPTS and the script is catalina.sh (called from startup.sh).

Arne


0 new messages