[ https://issues.apache.org/jira/browse/TOMEE-1547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andy Gumbrecht updated TOMEE-1547: ---------------------------------- Fix Version/s: (was: 1.7.2) 1.7.3 > Use application classloader for resources defined in resources.xml > ------------------------------------------------------------------ > > Key: TOMEE-1547 > URL: https://issues.apache.org/jira/browse/TOMEE-1547 > Project: TomEE > Issue Type: Improvement > Affects Versions: 1.7.1 > Reporter: Jonathan Gallimore > Assignee: Jonathan Gallimore > Fix For: 7.0.0-M1, 1.7.3 > > > Resources can be defined in applications using META-INF/resources.xml. This > is a useful feature, but because resources are created very early on in > deployment the final classloader for the application is not available. > I know I can manually specify a specific jar or classpath, but I specifically > want the resources I define to be loaded using the same classpath the > application uses. > So, for example, if I have an EJB jar in an EAR, and the EJB jar contains a > POJO called HelloBean, the following should load the resource from the > application classloader: > <Resources> > <Resource id="Hello" type="org.superbiz.HelloBean"> > property1 value1 > property2 value2 > </Resource> > </Resources> > Currently this fails with a class not found error, due to the following in > org.apache.openejb.assembler.classic.Assembler.createResource(ResourceInfo): > ClassLoader loader = Thread.currentThread().getContextClassLoader(); > boolean customLoader = false; > try { > if (serviceInfo.classpath != null && serviceInfo.classpath.length > > 0) { > final URL[] urls = new URL[serviceInfo.classpath.length]; > for (int i = 0; i < serviceInfo.classpath.length; i++) { > urls[i] = serviceInfo.classpath[i].toURL(); > } > loader = new URLClassLoaderFirst(urls, loader); > customLoader = true; > } > } catch (final MalformedURLException e) { > throw new OpenEJBException("Unable to create a classloader for " > + serviceInfo.id, e); > } > Object service = serviceRecipe.create(loader); > -- This message was sent by Atlassian JIRA (v6.3.4#6332)