Setting a property for System.getProperty()

R

RVic

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
 
E

Eric Sosman

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?

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);
}
}
 
R

RVic

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
 
R

RVic

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
 
M

markspace

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

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.
 
A

Arne Vajhøj

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
 
A

Arne Vajhøj

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.

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top