Hi,

I'm having a slight problem with the jndi stuff for the testing. I am trying to use 
the jboss naming service rather than the fake contet stuff.

I have set up the jndi.properties file to be:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

Next I stepped through the org.jboss.naming.NamingService.startService() method. The 
first bit loads up the properties from the jndi.properties file and sets the in 
System.properties, as expected there is no java.naming.provider.url there. Also, when 
I do a System.getProperty("java.naming.provider.url") at any stage nothing is returned.

However, once the first InitialContext is created and it's environment got, 
java.naming.provider.url is there! (i.e. it is in env below)

  |       InitialContext iniCtx = new InitialContext();
  |       Hashtable env = iniCtx.getEnvironment();
  | 


      
I followed this through, and new InitialContext()       
calls javax.naming.InitialContext.init() //This initialises the environment for the 
InitialContext
which calls javax.naming.internal.ResourceManager.getInitialEnvironment()
which calls javax.naming.internal.VersionHelper.getJndiProperties()

VersionHelper.getProperties() looks like this

  |     String[] getJndiProperties() {
  |     if (getSystemPropsFailed) {
  |         return null;        // after one failure, don't bother trying again
  |     }
  |     Properties sysProps = (Properties) AccessController.doPrivileged(
  |         new PrivilegedAction() {
  |             public Object run() {
  |                 try {
  |                     return System.getProperties();
  |                 } catch (SecurityException e) {
  |                     getSystemPropsFailed = true;
  |                     return null;
  |                 }
  |             }
  |         }
  |     );
  |     if (sysProps == null) {
  |         return null;
  |     }
  |     String[] jProps = new String[PROPS.length];
  |     for (int i = 0; i < PROPS.length; i++) {
  |         jProps = sysProps.getProperty(PROPS);
  |     }
  |     return jProps;
  |     }
  | 
  |    String getJndiProperty(final int i) {
  |     return (String) AccessController.doPrivileged(
  |         new PrivilegedAction() {
  |             public Object run() {
  |                 try {
  |                     return System.getProperty(PROPS);
  |                 } catch (SecurityException e) {
  |                     return null;
  |                 }
  |             }
  |         }
  |     );
  |     }
  | 



In this funky looking code (which to be honest I don't understand the special bits) 
java.naming.provider.url and jnp://localhost:1099 are returned. I'm wondering 
a) Why doesn't this appear in JBoss when starting that without the 
java.naming.provider.url in the jndi.properties
b) What the AccessController stuff does special to magically create the 
java.naming.provider.url=jnp://localhost:1099

Any ideas?

Cheers,

Kab

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3830823#3830823

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3830823


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to