Maybe put it in appinf and not lib, no? Le 13 sept. 2013 18:51, "rsheldon" <[email protected]> a écrit :
> Thanks for the speedy response Romain. > > Looking at the jrebel logs I found it was able to pick up the rebel.xml in > the lib directory. > > Unfortunately the tomcat loaders doesn't like it as it expects only jars in > this directory. After debugging into the tomee/tomcat code I found that I > could prevent this by adding "rebel.xml" onto the end of > the tomcat.util.scan.DefaultJarScanner.jarsToSki property defined in > conf/catalina.properties. A complete hack, but it worked. Here's the error > I was getting: > > WARNING: Failed to scan JAR [file:xxxx/my-ear/APP-INF/lib/rebel.xml] from > WEB-INF/lib > java.util.zip.ZipException: error in opening zip file > at java.util.zip.ZipFile.open(Native Method) > at java.util.zip.ZipFile.<init>(ZipFile.java:127) > at java.util.jar.JarFile.<init>(JarFile.java:135) > at java.util.jar.JarFile.<init>(JarFile.java:72) > at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:72) > at > sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48) > at > sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70) > at > > sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104) > at > > sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71) > at > org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:41) > at > org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34) > at > > org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback.scan(ContextConfig.java:2664) > at > > org.apache.tomee.loader.EmbeddedJarScanner.process(EmbeddedJarScanner.java:140) > at > org.apache.tomee.loader.EmbeddedJarScanner.scan(EmbeddedJarScanner.java:83) > at > org.apache.tomee.loader.TomEEJarScanner.scan(TomEEJarScanner.java:180) > at > > org.apache.catalina.startup.ContextConfig.processJarsForWebFragments(ContextConfig.java:1931) > at > > org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1261) > at > > org.apache.tomee.catalina.OpenEJBContextConfig.webConfig(OpenEJBContextConfig.java:353) > at > > org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) > at > > org.apache.tomee.catalina.OpenEJBContextConfig.configureStart(OpenEJBContextConfig.java:103) > at > > org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) > at > > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at > > org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) > at > > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at > > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) > at > > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) > at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:680) > > After that I found that jrebel was throwing classloading errors as it was > trying to mess around with some openejb classes. I think you're right on > the money when you say they're just supporting the basic tomcat > functionality. I have a contact within ZeroTurnaound so I'll hit them up > and see what their tomee support covers in more detail. Here's an example > error: > > INFO: Existing thread singleton service in SystemInstance(): > org.apache.openejb.cdi.ThreadSingletonServiceImpl@3fe9029b > 2013-09-12 14:54:12 JRebel: Class > 'org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler' could > not be processed by > > org.zeroturnaround.jrebel.openwebbeans.cbp.NormalScopedBeanInterceptorHandlerCBP@org.apache.catalina.loader.StandardClassLoader > @564e4fc4 > 2013-09-12 14:54:12 JRebel: ERROR > org.zeroturnaround.bundled.javassist.CannotCompileException: [source error] > getReturnType() not found in javax.enterprise.inject.spi.Bean > at org.zeroturnaround.bundled.javassist.CtNewMethod.make(JRebel:79) > at org.zeroturnaround.bundled.javassist.CtNewMethod.make(JRebel:45) > at > > org.zeroturnaround.jrebel.openwebbeans.cbp.NormalScopedBeanInterceptorHandlerCBP.process(NormalScopedBeanInterceptorHandlerCBP.java:36) > at > > org.zeroturnaround.javarebel.integration.support.JavassistClassBytecodeProcessor.process(JRebel:62) > at com.zeroturnaround.javarebel.DZ.a(JRebel:235) > at com.zeroturnaround.javarebel.DZ.a(JRebel:224) > at com.zeroturnaround.javarebel.DZ.a(JRebel:208) > at > > com.zeroturnaround.javarebel.SDKIntegrationImpl.runBytecodeProcessors(JRebel:121) > at com.zeroturnaround.javarebel.DO.transform(JRebel:46) > at java.lang.ClassLoader.defineClass(ClassLoader.java) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) > at java.net.URLClassLoader.access$000(URLClassLoader.java:58) > at java.net.URLClassLoader$1.run(URLClassLoader.java:197) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) > at java.lang.ClassLoader.defineClass(ClassLoader.java:615) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) > at java.net.URLClassLoader.access$000(URLClassLoader.java:58) > at java.net.URLClassLoader$1.run(URLClassLoader.java:197) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:190) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > at > > org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:104) > at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43) > at > > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:799) > at > > org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:613) > at > > org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:504) > at > org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:410) > at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148) > at org.apache.openejb.OpenEJB.init(OpenEJB.java:296) > at > org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:245) > at > org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:133) > at > > org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122) > at > > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) > at > > org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) > at > > org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402) > at > org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110) > at org.apache.catalina.startup.Catalina.load(Catalina.java:640) > at org.apache.catalina.startup.Catalina.load(Catalina.java:665) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) > Caused by: compile error: getReturnType() not found in > javax.enterprise.inject.spi.Bean > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atMethodCallCore(JRebel:723) > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atCallExpr(JRebel:688) > at > > org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atCallExpr(JRebel:157) > at > > org.zeroturnaround.bundled.javassist.compiler.ast.CallExpr.accept(JRebel:46) > at > > org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atMethodArgs(JRebel:221) > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atMethodCallCore(JRebel:709) > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atCallExpr(JRebel:688) > at > > org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atCallExpr(JRebel:157) > at > > org.zeroturnaround.bundled.javassist.compiler.ast.CallExpr.accept(JRebel:46) > at > > org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atMethodArgs(JRebel:221) > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atMethodCallCore(JRebel:709) > at > > org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atCallExpr(JRebel:688) > at > > org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atCallExpr(JRebel:157) > at > > org.zeroturnaround.bundled.javassist.compiler.ast.CallExpr.accept(JRebel:46) > at > > org.zeroturnaround.bundled.javassist.compiler.CodeGen.doTypeCheck(JRebel:242) > at > org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(JRebel:330) > at > org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(JRebel:50) > at > org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(JRebel:351) > at > org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(JRebel:50) > at > > org.zeroturnaround.bundled.javassist.compiler.CodeGen.atMethodBody(JRebel:292) > at > > org.zeroturnaround.bundled.javassist.compiler.CodeGen.atMethodDecl(JRebel:274) > at > > org.zeroturnaround.bundled.javassist.compiler.ast.MethodDecl.accept(JRebel:44) > at > > org.zeroturnaround.bundled.javassist.compiler.Javac.compileMethod(JRebel:169) > at > org.zeroturnaround.bundled.javassist.compiler.Javac.compile(JRebel:95) > at org.zeroturnaround.bundled.javassist.CtNewMethod.make(JRebel:74) > ... 51 more > > Once we rid ourselves of a last few MDBs we could go plain tomcat, but > being able to deploy an ear rather than multiple war files and a bunch of > jars into tomcat's /lib directory is very convenient. However, if we can't > use JRebel that could be a show-stopper for us on TomEE. Our application > takes a while to load (lots of data caching on startup), so JRebel has > become a very valuable part of our day-to-day development process. > > Thanks > Richard > > > On Fri, Sep 13, 2013 at 9:03 AM, Romain Manni-Bucau [via OpenEJB] < > [email protected]> wrote: > > > Hi > > > > 1) APP-INF/lib/ should be supported (so it should be fine) > > 2) when i looked their support it was more or less the tomcat one (no > > more). Personally i used fakereplace with some success to hot replace > > my method bodies (https://github.com/fakereplace/fakereplace) > > Romain Manni-Bucau > > Twitter: @rmannibucau > > Blog: http://rmannibucau.wordpress.com/ > > LinkedIn: http://fr.linkedin.com/in/rmannibucau > > Github: https://github.com/rmannibucau > > > > > > > > 2013/9/12 rsheldon <[hidden email]< > http://user/SendEmail.jtp?type=node&node=4665072&i=0>>: > > > > > > > All, > > > > > > I'm working to migrate an enterprise application EAR from weblogic to > > TomEE. > > > We currently use JRebel and would like to do so with TomEE. I know > that > > > they support 1.5.2 (I'm using 1.6.0-SNAPSHOT) and 1.0 (although I'm not > > sure > > > what their support covers) > > > > > > Here's my problem. We have a large number of libs in APP-INF/lib that I > > > would like to have JRebel monitor/reload. However, they want the > > rebel.xml > > > for this to live in APP-INF/classes. Weblogic supports this directory, > > but I > > > can't see any mention of it for TomEE. > > > > > > So I have 2 questions: > > > > > > 1. Does/could TomEE support an APP-INF/classes directory? > > > > > > 2. Is anyone successfully using TomEE+JRebel+EAR, and if so, where have > > you > > > put the rebel file for the libs that live in APP-INF/lib? > > > > > > Thanks, > > > Richard > > > > > > > > > > > > -- > > > View this message in context: > > http://openejb.979440.n4.nabble.com/TomEE-JRebel-tp4665068.html > > > Sent from the OpenEJB User mailing list archive at Nabble.com. > > > > > > ------------------------------ > > If you reply to this email, your message will be added to the discussion > > below: > > http://openejb.979440.n4.nabble.com/TomEE-JRebel-tp4665068p4665072.html > > To unsubscribe from TomEE + JRebel, click here< > http://openejb.979440.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4665068&code=cnNoZWxkb243MkBnbWFpbC5jb218NDY2NTA2OHwtMTkzODkzMTIwNQ== > > > > . > > NAML< > http://openejb.979440.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml > > > > > > > > > -- > View this message in context: > http://openejb.979440.n4.nabble.com/TomEE-JRebel-tp4665068p4665074.html > Sent from the OpenEJB User mailing list archive at Nabble.com.
