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 >>>>>>
