[jboss-cvs] JBossAS SVN: r77176 - trunk/ejb3/src/main/org/jboss/ejb3/client.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Aug 18 21:16:51 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-08-18 21:16:51 -0400 (Mon, 18 Aug 2008)
New Revision: 77176
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/client/JndiPropertyInjector.java
Log:
JBAS-5457, log more info about jndi value class vs field class on IllegalArgumentException
Modified: trunk/ejb3/src/main/org/jboss/ejb3/client/JndiPropertyInjector.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/client/JndiPropertyInjector.java 2008-08-18 23:17:32 UTC (rev 77175)
+++ trunk/ejb3/src/main/org/jboss/ejb3/client/JndiPropertyInjector.java 2008-08-19 01:16:51 UTC (rev 77176)
@@ -21,6 +21,11 @@
*/
package org.jboss.ejb3.client;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@@ -72,7 +77,23 @@
{
Object value = lookup(jndiName);
log.trace("injecting " + value + " from " + jndiName + " into " + property + " of " + instance);
- property.set(instance, value);
+ try
+ {
+ property.set(instance, value);
+ }
+ catch(IllegalArgumentException e)
+ {
+ Class c1 = value.getClass();
+ StringBuffer buffer = new StringBuffer("Jndi value '"+jndiName+"' class info:");
+ displayClassInfo(c1, buffer);
+ log.debug("Failed to inject jndi property, "+buffer);
+ Class c2 = property.getType();
+ buffer.setLength(0);
+ buffer.append("Field "+property.getName()+" class info:");
+ displayClassInfo(c2, buffer);
+ log.debug(", "+buffer);
+ throw e;
+ }
}
protected Object lookup(String jndiName)
@@ -117,4 +138,32 @@
}
return dependency;
}
+
+ static void displayClassInfo(Class clazz, StringBuffer results)
+ {
+ // Print out some codebase info for the ProbeHome
+ ClassLoader cl = clazz.getClassLoader();
+ results.append("\n"+clazz.getName()+".ClassLoader="+cl);
+ CodeSource clazzCS = clazz.getProtectionDomain().getCodeSource();
+ if( clazzCS != null )
+ results.append("\n++++CodeSource: "+clazzCS);
+ else
+ results.append("\n++++Null CodeSource");
+
+ results.append("\nImplemented Interfaces:");
+ Class[] ifaces = clazz.getInterfaces();
+ for(int i = 0; i < ifaces.length; i ++)
+ {
+ results.append("\n++"+ifaces[i]);
+ ClassLoader loader = ifaces[i].getClassLoader();
+ results.append("\n++++ClassLoader: "+loader);
+ ProtectionDomain pd = ifaces[i].getProtectionDomain();
+ CodeSource cs = pd.getCodeSource();
+ if( cs != null )
+ results.append("\n++++CodeSource: "+cs);
+ else
+ results.append("\n++++Null CodeSource");
+ }
+ }
+
}
More information about the jboss-cvs-commits
mailing list