• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1175
  • Last Modified:

JBoss and JNDI using pojo javabean

Hello, this question is two part.

Part 1: How can I place a simple custom java object in jndi on jboss 4?  In Tomcat is could not be easier.  I simply have

< Context path="/myApp" ... >
   < Resource name="myPath/MyObject"
         auth="Container"
         type="com.myco.MyObject"
         factory="org.apache.naming.factory.BeanFactory"
         location="localhost"/>  // this line will call getLocation in MyObject after instantiating it.
</Context>

Now to use this I simply:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
MyObject myObj = (MyObject) envCtx.lookup("myPath/MyObject");

Part 2: The above Tomcat config is very nice since it is app context specific.  I can now take myApp.war and copy/paste it as myAppQA.war.  No app config at all.  I simply add another context to server.xml except I change the name to myAppQA and the location="localhost" to location="www.where-ever.com".  Then when ever I deploy the either myApp or myAppQA it will get the different object even though the application code points to the same name.  In JBoss, it looks like any jndi reference is to be setup as app server wide, not app context wide.

I'm really stuck on this as I'm new to JBoss.  Thanks in advance.
Dale



0
dbronk_winscape_com
Asked:
dbronk_winscape_com
  • 2
1 Solution
 
valipotorCommented:
HI,

I believe that what you need is an <env-entry> in your web.xml file.

Best regards,

valipotor
0
 
dbronk_winscape_comAuthor Commented:
But is there a way to set this at the server level like Tomcat allows?  Tomcat is beautiful about this.  In the server xml I can simply add a Resource entry to the context and then when the server comes up it will instantiate the class and inject any values placed in the Resource node into the object.  It then places that object into jndi.  This is awesome with Tomcat because now I can simply place my server configs, ie: database settings, and other server specific settings that would normally change when moving through dev, qa, prod, etc.  By adding a <env-entry> in my web.xml means that I have to configure before I deploy to each environment.  My way I configure one time and never again.

Since jboss uses tomcat I was hoping there was a way to do this.

Thanks,
Dale
0
 
valipotorCommented:
Well, in this case you should use a similar approach.

http://www.codechimp.net/?p=13

Basically, in the above example, the Spring configuration is loaded and added to JNDI in order to be available to all other deployed applications.

The initial settings for the parameters can be specified in the MBean XML file.

JBoss also offers a web console which alowes you to invoke methods on the MBean you have created.

Hope this helps you,

valipotor
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now