Hi Guys,
I setup a tomcat 7.0.67 web server and add two JNDIs resources into 
conf/server.xml which are dependent that one should been loaded first before 
another. 
Seems it doesn't work if I change their appearance order in server.xml. After 
checking the source code and I found that the loading order of JNDI resource 
are decided by the "HashCode" of resource name.
In      org.apache.catalina.deploy.NamingResources.java                         
                             /**     * The resource references for this web 
application, keyed by name.     */    private HashMap<String, ContextResource> 
resources =        new HashMap<String, ContextResource>();                      
     ==> new LinkedHashMap<String, ContextResource>();
And in org.apache.naming.NamingContext.java
    public NamingContext(Hashtable<String,Object> env, String name)         
throws NamingException {        this.bindings = new 
HashMap<String,NamingEntry>();        ==> this.bindings = new 
LinkedHashMap<String,NamingEntry>();        ...       }
    /**     * Builds a naming context using the given environment.     */    
public NamingContext(Hashtable<String,Object> env, String name,            
HashMap<String,NamingEntry> bindings)         throws NamingException {        
this(env, name);  this.bindings = bindings;                                   
==> if (bindings != null)   this.bindings.putAll(bindings);    }
After codes changed as above, the JNDI resources could be loaded as desired by 
their insertion order.
I wonder whether such modifications could be put into formal release, that It 
could be convenient for the user like me who have the several dependent JNDI 
objects.
Thank you very much,
Jessie

                                          

Reply via email to