Index: java/org/apache/catalina/core/DefaultInstanceManager.java =================================================================== --- java/org/apache/catalina/core/DefaultInstanceManager.java (revision 998371) +++ java/org/apache/catalina/core/DefaultInstanceManager.java (working copy) @@ -453,6 +453,8 @@ Object lookedupResource; boolean accessibility; + normalize(name); + if ((name != null) && (name.length() > 0)) { lookedupResource = context.lookup(name); @@ -483,7 +485,7 @@ protected static void lookupMethodResource(Context context, Object instance, Method method, String name, Class clazz) throws NamingException, IllegalAccessException, InvocationTargetException { - + if (!method.getName().startsWith("set") || method.getName().length() < 4 || method.getParameterTypes().length != 1 @@ -493,7 +495,9 @@ Object lookedupResource; boolean accessibility; - + + normalize(name); + if ((name != null) && (name.length() > 0)) { lookedupResource = context.lookup(name); @@ -508,15 +512,22 @@ method.setAccessible(accessibility); } - public static String getName(Method setter) { - StringBuilder name = new StringBuilder(setter.getName()); + private static String normalize(String jndiName){ + if(jndiName != null && jndiName.startsWith("java:comp/env/")){ + return jndiName.substring(14); + } + return jndiName; + } + + public static String getName(Method setter) { + StringBuilder name = new StringBuilder(setter.getName()); - // remove 'set' - name.delete(0, 3); + // remove 'set' + name.delete(0, 3); - // lowercase first char - name.setCharAt(0, Character.toLowerCase(name.charAt(0))); + // lowercase first char + name.setCharAt(0, Character.toLowerCase(name.charAt(0))); - return name.toString(); - } + return name.toString(); + } }