Home » Support » Forum » ObjectDB with JRebel: copious 'Not Enhanced:' errors with EJBs

ObjectDB with JRebel: copious 'Not Enhanced:' errors with EJBs

#1

JRebel 6.5.1
ObjectDB-2.6.9_06
Glassfish4.1.1 (or Payara41 [163 full]]

I appreciate that you are not responsible for compatibility with JRebel, but you might be able to provide some insight or feedback. Reported also to Zeroturnaround for JRebel here.

When using JRebel I am getting copious server log output for nearly every @EJB on startup. Typical message is like:

Info:   [2016-10-30 09:16:46 #6 enhancer.agent]
Not Enhanced: com/example/ejb/query/__EJB31_Generated__ExampleQuery__Intf__: com.objectdb.o.TEX: Type com.example.ejb.query.__EJB31_Generated__ExampleQuery__Intf__ is not found
at com.objectdb.o.MSG.e(MSG.java:108)
at com.objectdb.o.SCM.w(SCM.java:459)
at com.objectdb.o.JEW.aG(JEW.java:160)
at com.objectdb.JEnhancerAgent.transform(JEnhancerAgent.java:155)
at org.glassfish.persistence.jpa.ServerProviderContainerContractInfo$1.transform(ServerProviderContainerContractInfo.java:98)
at org.glassfish.web.loader.WebappClassLoader$3.preprocess(WebappClassLoader.java:3465)
at org.glassfish.web.loader.WebappClassLoader.process(WebappClassLoader.java)
at org.zeroturnaround.javarebel.integration.util.WeakUtil$WeakClassBytecodeProcessorAdapter.process(SourceFile:287)
at com.zeroturnaround.javarebel.rx.a(SourceFile:365)
at com.zeroturnaround.javarebel.rx.a(SourceFile:354)
at com.zeroturnaround.javarebel.rx.b(SourceFile:407)
at com.zeroturnaround.javarebel.SDKIntegrationImpl.processManagedClass(SourceFile:43)
at com.zeroturnaround.javarebel.SDKIntegrationImpl.runBytecodeProcessors(SourceFile:35)
at com.zeroturnaround.javarebel.px.transform(SourceFile:94)
at java.lang.ClassLoader.defineClass(ClassLoader.java)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.zeroturnaround.javarebel.ps.a(SourceFile:96)
at com.zeroturnaround.javarebel.ps.a(SourceFile:85)
at com.zeroturnaround.javarebel.pz.a(SourceFile:440)
at com.zeroturnaround.javarebel.SDKIntegrationImpl.defineReloadableClass(SourceFile:111)
at com.sun.ejb.codegen.EjbOptionalIntfGenerator.__define(EjbOptionalIntfGenerator.java)
at com.sun.ejb.codegen.EjbOptionalIntfGenerator.makeClass(EjbOptionalIntfGenerator.java)
at com.sun.ejb.codegen.EjbOptionalIntfGenerator.access$200(EjbOptionalIntfGenerator.java:65)
at com.sun.ejb.codegen.EjbOptionalIntfGenerator$1.run(EjbOptionalIntfGenerator.java:100)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.ejb.codegen.EjbOptionalIntfGenerator.loadClass(EjbOptionalIntfGenerator.java:97)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:753)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:143)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:137)
at com.sun.ejb.containers.StatelessContainerFactory.createContainer(StatelessContainerFactory.java:61)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:221)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:291)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:99)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:206)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:313)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:496)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.example.ejb.query.__EJB31_Generated__ExampleQuery__Intf__
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
at com.objectdb.o.ACL.loadClass(ACL.java:131)
at com.objectdb.o.BCL.loadClass(BCL.java:63)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.objectdb.o.SCM.w(SCM.java:455)
... 76 more
Severe:   [2016-10-30 09:16:46 #6 enhancer.agent]

I am using post-compile ObjectDB enhancement in an Ant script that targets folders with @Entity classes only.

 

 

 

 

 

 

 

--- Webel IT Australia, "The Elements of the Web", Specialists in model-based UML, SysML, Enterprise Java, XML, and Drupal CMS web engineering. Dr Darren Kelly, BSc, PhD, https://www.webel.com.au
#2

It seems to be just a warning, does it cause any further issues?

You may suppress these warnings by reducing logging level of the enhancer agent (in objectdb.conf):

    <logger name="enhancer.agent" level="error" />

Actually, you do not need the Enhancer agent, since you use build time emhancement, but GlassFish invokes it automatically. Currently there is no setting in ObjectDB to disable the enhancer agent, so disabling the warnings, if it works for you, should be the right solution.

ObjectDB Support
ObjectDB - Fast Object Database for Java (JPA/JDO)
#3

The reported warning has been fixed by the ZeroTurnaround JRebel team.

You wrote:

> but GlassFish invokes it automatically .. Currently there is no setting in ObjectDB to disable the enhancer agent,

Aha ! Indeed, I am getting a long list of ObjectDB enhancement messages, not least because I have lots of entities, but also some of these errors (again), which don't seem to affect how my web app runs (so for now I am not reporting them here):

    Enhancement of type com.example.entity.TriggerObjectdb is old and cannot be used (..)

That was confusing me. I knew I had enhancement off in the objectdb.conf and wondered why I was seeing them.

 

--- Webel IT Australia, "The Elements of the Web", Specialists in model-based UML, SysML, Enterprise Java, XML, and Drupal CMS web engineering. Dr Darren Kelly, BSc, PhD, https://www.webel.com.au
#4

PS:

> but GlassFish invokes it automatically ..

Am now using ObjectDB+Payara (forked from Glassfish). Has frequent bug fixes and releases.

--- Webel IT Australia, "The Elements of the Web", Specialists in model-based UML, SysML, Enterprise Java, XML, and Drupal CMS web engineering. Dr Darren Kelly, BSc, PhD, https://www.webel.com.au

Post Reply

To post a reply and/or subscribe to update notifications - please login