Maybe try a more recent version cause we changed several things and some of them were impacting in maven environment.
Romain Manni-Bucau @rmannibucau http://www.tomitribe.com http://rmannibucau.wordpress.com https://github.com/rmannibucau 2014-10-14 17:06 GMT+02:00 Mansour Al Akeel <[email protected]>: > No. I am using openejb embedded 4.6.0 > > > On Tue, Oct 14, 2014 at 10:43 AM, Romain Manni-Bucau > <[email protected]> wrote: >> asm4? you are not on tomee 1.7? >> >> >> Romain Manni-Bucau >> @rmannibucau >> http://www.tomitribe.com >> http://rmannibucau.wordpress.com >> https://github.com/rmannibucau >> >> >> 2014-10-14 16:40 GMT+02:00 Mansour Al Akeel <[email protected]>: >>> Thank you Romain. >>> The target/classes was in the class path, but the size of the url array was >>> 0. >>> >>> This was helpful. I am getting another error, that I was not able to >>> understand. >>> >>> SEVERE: FATAL ERROR: Unknown error in Assembler. Please send the >>> following stack trace and this message to [email protected] : >>> java.lang.IllegalArgumentException >>> at org.apache.xbean.asm4.ClassReader.<init>(Unknown Source) >>> at org.apache.xbean.asm4.ClassReader.<init>(Unknown Source) >>> at org.apache.xbean.asm4.ClassReader.<init>(Unknown Source) >>> at >>> org.apache.openejb.util.AnnotationFinder.readClassDef(AnnotationFinder.java:297) >>> at >>> org.apache.openejb.util.AnnotationFinder.find(AnnotationFinder.java:163) >>> at >>> org.apache.openejb.config.DeploymentLoader.checkAnnotations(DeploymentLoader.java:1871) >>> at >>> org.apache.openejb.config.DeploymentLoader.discoverModuleType(DeploymentLoader.java:1782) >>> at >>> org.apache.openejb.config.DeploymentsResolver.processUrls(DeploymentsResolver.java:388) >>> at >>> org.apache.openejb.config.DeploymentsResolver.loadFromClasspath(DeploymentsResolver.java:301) >>> at >>> org.apache.openejb.config.ConfigurationFactory.getModulesFromClassPath(ConfigurationFactory.java:647) >>> at >>> org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:524) >>> at >>> org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:575) >>> at >>> org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:429) >>> at >>> org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:408) >>> at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148) >>> at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:65) >>> at org.apache.openejb.OpenEJB.init(OpenEJB.java:296) >>> at org.apache.openejb.OpenEJB.init(OpenEJB.java:276) >>> >>> >>> I will continue digging. >>> >>> Thank you a lot. >>> >>> >>> On Tue, Oct 14, 2014 at 2:20 AM, Romain Manni-Bucau >>> <[email protected]> wrote: >>>> Hi >>>> >>>> we have a mojo like it >>>> http://svn.apache.org/repos/asf/tomee/tomee/trunk/maven/openejb-embedded-maven-plugin/ >>>> >>>> I think you miss target/classes in your loader >>>> >>>> >>>> Romain Manni-Bucau >>>> @rmannibucau >>>> http://www.tomitribe.com >>>> http://rmannibucau.wordpress.com >>>> https://github.com/rmannibucau >>>> >>>> >>>> 2014-10-14 6:37 GMT+02:00 Mansour Al Akeel <[email protected]>: >>>>> Romain, >>>>> It was my fault. I was loading the persistence context using openjpa. >>>>> However, switched to OpenEJB to allow scanning for the persistence.xml >>>>> in other jars. The problem is the current jar has some EJBs. I am >>>>> loading them from maven mojo. In a way, it's similar to unit testing. >>>>> >>>>> protected void setupClassPath() throws MalformedURLException, >>>>> DependencyResolutionRequiredException >>>>> { >>>>> >>>>> synchronized (this) >>>>> { >>>>> if (classLoader != null) >>>>> return; >>>>> } >>>>> synchronized (this) >>>>> { >>>>> List<URL> urls = new ArrayList<URL>(); >>>>> >>>>> List<String> paths = new LinkedList<String>(); >>>>> >>>>> List<String> compilePath = >>>>> mavenProject.getCompileClasspathElements(); >>>>> >>>>> List<String> testPath = mavenProject.getTestClasspathElements(); >>>>> >>>>> List<String> runtimePath = >>>>> mavenProject.getRuntimeClasspathElements(); >>>>> >>>>> List<String> systemPath = >>>>> mavenProject.getSystemClasspathElements(); >>>>> >>>>> List<Dependency> dependencies = >>>>> mavenProject.getCompileDependencies(); >>>>> >>>>> this.merge(paths, compilePath); >>>>> this.merge(paths, testPath); >>>>> this.merge(paths, runtimePath); >>>>> this.merge(paths, systemPath); >>>>> >>>>> getLog().info("Scanning ... "); >>>>> >>>>> for (Object object : paths) >>>>> { >>>>> String path = (String) object; >>>>> >>>>> getLog().info("Adding " + path + " to classpath"); >>>>> >>>>> urls.add(new File(path).toURL()); >>>>> } >>>>> >>>>> ClassLoader parent = >>>>> Thread.currentThread().getContextClassLoader(); >>>>> >>>>> parent = this.getClass().getClassLoader(); >>>>> >>>>> ClassLoader contextClassLoader = >>>>> URLClassLoader.newInstance(urls.toArray(new URL[0]), parent); >>>>> >>>>> Thread.currentThread().setContextClassLoader(contextClassLoader); >>>>> >>>>> return; >>>>> } >>>>> } >>>>> >>>>> ..... >>>>> >>>>> properties.put(Context.INITIAL_CONTEXT_FACTORY, >>>>> "org.apache.openejb.client.LocalInitialContextFactory"); >>>>> >>>>> // properties.put(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, >>>>> "true"); >>>>> properties.put("openejb.validation.output.level", "VERBOSE"); >>>>> >>>>> properties.put("jdbc/dataSource", "new://Resource?type=DataSource"); >>>>> properties.put("jdbc/dataSource.JdbcDriver", this.driver); >>>>> properties.put("jdbc/dataSource.JdbcUrl", this.url); >>>>> properties.put("jdbc/dataSource.UserName", this.username); >>>>> properties.put("jdbc/dataSource.Password", this.password); >>>>> >>>>> properties.setProperty("javax.persistence.transactionType", >>>>> "RESOURCE_LOCAL"); >>>>> >>>>> Context ctx; >>>>> try >>>>> { >>>>> >>>>> ctx = new InitialContext(properties); >>>>> >>>>> >>>>> The problem I am facing now, is that not all the dependencies are >>>>> available for OpenEJB: >>>>> >>>>> Oct 13, 2014 10:15:36 PM org.apache.openejb.OpenEJB$Instance <init> >>>>> SEVERE: OpenEJB has encountered a fatal error and cannot be started: >>>>> The Assembler encountered an unexpected error while attempting to >>>>> build the container system. >>>>> java.lang.NoClassDefFoundError: >>>>> org/perfectjpattern/jee/integration/dao/AbstractJpaManagedBaseDao >>>>> at java.lang.ClassLoader.defineClass1(Native Method) >>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:800) >>>>> at >>>>> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) >>>>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) >>>>> at java.net.URLClassLoader.access$100(URLClassLoader.java:71) >>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:361) >>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355) >>>>> at java.security.AccessController.doPrivileged(Native Method) >>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354) >>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:425) >>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:412) >>>>> at >>>>> org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:180) >>>>> at >>>>> org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:74) >>>>> at >>>>> org.apache.xbean.finder.archive.JarArchive.loadClass(JarArchive.java:84) >>>>> at >>>>> org.apache.xbean.finder.archive.CompositeArchive.loadClass(CompositeArchive.java:58) >>>>> at >>>>> org.apache.openejb.config.FinderFactory$DebugArchive.loadClass(FinderFactory.java:139) >>>>> at >>>>> org.apache.xbean.finder.AnnotationFinder$ClassInfo.get(AnnotationFinder.java:1425) >>>>> at >>>>> org.apache.xbean.finder.AnnotationFinder.findMetaAnnotatedClasses(AnnotationFinder.java:540) >>>>> at >>>>> org.apache.xbean.finder.AnnotationFinder.findMetaAnnotatedClasses(AnnotationFinder.java:489) >>>>> at >>>>> org.apache.openejb.config.FinderFactory$ModuleLimitedFinder.findMetaAnnotatedClasses(FinderFactory.java:291) >>>>> at >>>>> org.apache.openejb.config.AnnotationDeployer$DiscoverAnnotatedBeans.deploy(AnnotationDeployer.java:1391) >>>>> at >>>>> org.apache.openejb.config.AnnotationDeployer$DiscoverAnnotatedBeans.deploy(AnnotationDeployer.java:436) >>>>> at >>>>> org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:351) >>>>> at >>>>> org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:396) >>>>> at >>>>> org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:938) >>>>> at >>>>> org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:799) >>>>> at >>>>> org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:531) >>>>> at >>>>> org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:575) >>>>> at >>>>> org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:429) >>>>> at >>>>> org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:408) >>>>> at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148) >>>>> at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:65) >>>>> at org.apache.openejb.OpenEJB.init(OpenEJB.java:296) >>>>> at org.apache.openejb.OpenEJB.init(OpenEJB.java:276) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at >>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>> at >>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>> at java.lang.reflect.Method.invoke(Method.java:606) >>>>> at >>>>> org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36) >>>>> at >>>>> org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:96) >>>>> at >>>>> org.apache.openejb.core.LocalInitialContextFactory.init(LocalInitialContextFactory.java:60) >>>>> at >>>>> org.apache.openejb.core.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:44) >>>>> >>>>> >>>>> I am not sure if adding dependencies to OpenEJB class works using >>>>> >>>>> Thread.currentThread().setContextClassLoader(contextClassLoader); >>>>> >>>>> Thank you. >>>>> >>>>> >>>>> On Mon, Oct 13, 2014 at 7:10 AM, Romain Manni-Bucau >>>>> <[email protected]> wrote: >>>>>> not for war and classpath apps (only for ears) >>>>>> >>>>>> >>>>>> Romain Manni-Bucau >>>>>> @rmannibucau >>>>>> http://www.tomitribe.com >>>>>> http://rmannibucau.wordpress.com >>>>>> https://github.com/rmannibucau >>>>>> >>>>>> >>>>>> 2014-10-13 13:07 GMT+02:00 Andy Gumbrecht <[email protected]>: >>>>>>> Could this be related the '*openejb.finder.module-scoped=true*' >>>>>>> property? >>>>>>> >>>>>>> Andy. >>>>>>> >>>>>>> >>>>>>> On 13/10/2014 08:39, Romain Manni-Bucau wrote: >>>>>>>> >>>>>>>> Hi >>>>>>>> >>>>>>>> it should do out of the box,can you share more details/code? >>>>>>>> >>>>>>>> >>>>>>>> Romain Manni-Bucau >>>>>>>> @rmannibucau >>>>>>>> http://www.tomitribe.com >>>>>>>> http://rmannibucau.wordpress.com >>>>>>>> https://github.com/rmannibucau >>>>>>>> >>>>>>>> >>>>>>>> 2014-10-13 7:40 GMT+02:00 Mansour Al Akeel <[email protected]>: >>>>>>>>> >>>>>>>>> I am writing unit tests. The unit test include multiple jars, each of >>>>>>>>> them has JPA entities and persistence.xml file. Each file has it's own >>>>>>>>> Persistence Context. >>>>>>>>> >>>>>>>>> >>>>>>>>> The JPA entities in jar B references some entities in jar file A. I >>>>>>>>> need to load both persistence.xml. >>>>>>>>> >>>>>>>>> Is there a way to instruct openejb container to scan for other >>>>>>>>> persistence.xml in different jars ?? >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Andy Gumbrecht >>>>>>> https://twitter.com/AndyGeeDe >>>>>>> http://www.tomitribe.com >>>>>>>
