Question

I would like to set some read-only parameters (eg. an RMI registry host and port) to a Java EE application deployed on a Glassfish server. The usual place to do this would be the deployment descriptor, but my problem is that it is packaged in the EAR, so I cannot edit it without changing the EAR.

I need something similar to setting JDBC and JMS resources, but much simpler. I could put the configuration data in a database table but that seems to be overkill. I could use the File Resource Adapter, but it would be best if I could edit the configuration in the Glassfish Admin Console.

Is there a standard way to do this? How do you test your applications when they depend on external nodes they need to be communicating with? Where shall I put these parameters and how can I access them?

My best guess was to define external JNDI resources, but then where do I put the data?

UPDATE: this is what I was thinking of:

How can I store Java EE configuration parameters outside of an EAR or WAR?

So the question is: how do I do this in Glassfish?

Was it helpful?

Solution

After a few hours of googling I found the answer! It's not trivial, but luckily very easy. Here it is:

http://www.mentby.com/glassfish/custom-resource-work-when-looking-it-up-but-not-with-injection.html

Create a Custom Resource on the Admin Console, and add a Property called "value". Like this:

alt text http://img231.imageshack.us/img231/8237/jndicustomresource.png

Then accessing this name/value is really easy from the EJB:

try {
     InitialContext ic = new InitialContext();
     String value = (String) ic.lookup("MyCustomResource");
     System.out.println("MyCustomResource = " + value);
} catch (NamingException e) {
     e.printStackTrace();
}

Which prints

INFO: MyCustomResource = A big hug from MyCustomResource!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top