I understand where your caution comes from about the ClassLoader after reading the spec, but when I read the Javadoc on getClass().getResource(), it sounds like it too is locating the ClassLoader. When I did some searching, I found that Tom Marrs (Lead Author, JBoss at Work: A Practical Guide) had the same solution as I did as late as 2006. http://www.coderanch.com/t/89900/JBoss/reading-properties-file
I spent the last few days building up a simple set of test cases where I loaded classes and resources from different types of ClassLoaders both inside and outside the EJB. In my simple test case, I could not recreate the problem. I finally tracked the issue down to the deployment descriptor. The JBoss 5 parsing of the deployment descriptor elements seems to now include white-space characters into values. My class looked like the following... | @Stateless | public class TellerEJB implements TellerLocal, TellerRemote { | ... | @Resource(name="daoClass") | protected String daoClassName; | | @PostConstruct | public void init() { | log.debug("init(), daoClass=" + daoClassName); | teller = new TellerImpl(); | | try { | AccountDAO dao = (AccountDAO)Thread.currentThread() | .getContextClassLoader() | .loadClass(daoClassName) | .newInstance(); | My deployment descriptor was written as follows | ... | <enterprise-beans> | <session> | <ejb-name>TellerEJB</ejb-name> | <env-entry> | <env-entry-name>daoClass</env-entry-name> | <env-entry-type>java.lang.String</env-entry-type> | <env-entry-value>xxx.jpa.JPAAccountDAO | </env-entry-value> | </env-entry> | </session> | </enterprise-beans> | </ejb-jar> | Note the line break after ...DAO and the line break in the original debug output. Once I removed the white-space from the deployment descriptor all worked. | <enterprise-beans> | <session> | <ejb-name>TellerEJB</ejb-name> | <env-entry> | <env-entry-name>daoClass</env-entry-name> | <env-entry-type>java.lang.String</env-entry-type> | <env-entry-value>xxx.jpa.JPAAccountDAO</env-entry-value> | </env-entry> | </session> | </enterprise-beans> | I've seen this same type of problem elsewhere in the processing of deployment descriptors by JBoss 5. In one post I saw where adding export JAVA_OPTS="-Dxb.builder.useUnorderedSequence=true" to the startup corrected the issue. I have not yet tried that for this issue. So, in short. I may be violating what you think is wrong with my use of Thread.currentThread().getContextClassLoader(). However the problem in porting from JBoss 4 to JBoss 5 ended up being a whitespace interpretation change of the ejb-jar.xml between the two versions. JBoss 5 is adding extra whitespace to the injected String variable. Thoughts? View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4246592#4246592 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4246592 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user