ObjectDB ObjectDB

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.

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.

 

 

 

 

 

 

 

edit
delete
#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
edit
delete
#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.

 

edit
delete
#4

PS:

> but GlassFish invokes it automatically ..

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

edit
delete

Reply

To post on this website please sign in.