0
votes

We have a jar file that contains JPA entity beans and a stateless session bean with an injected EntityManager as a service bean. The service bean has these annotations:

@Stateless
@LocalBean
@EJB(name = "java:global/DataService", beanName = "DataService", beanInterface = DataService.class)

Because the Glassfish portable context name contains the war file name (with its version number) we are using the @EJB annotation to define a name that is war file name agnostic.

This jar is a dependency/included in two separate war files. The war files are deployed in the same Glassfish (3.1.2.2) server. We are finding binding issues in the logs and believe the issue is classloaders. I've tried looking for how-to's on deploying EJBs multiple times to the same app server, but haven't been able to find anything.

Can somebody provide search terms or point me to a resource that explains EJB classloading that may help with the above issue?

As requested, here's a sample exception where the JPA jar file is included in a test war/app named DataModelTest:

[#|2014-05-29T10:47:11.880-0600|WARNING|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=2132;_ThreadName=Thread-6;|WEB0610: [/DataModelTest] failed to unbind namespace    
javax.naming.NameNotFoundException: Cannot find name to unbind    
    at com.sun.enterprise.naming.impl.TransientContext.doUnbind(TransientContext.java:398)    
    at com.sun.enterprise.naming.impl.TransientContext.unbind(TransientContext.java:420)    
    at com.sun.enterprise.naming.impl.TransientContext.unbind(TransientContext.java:424)    
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.unbind(SerialContextProviderImpl.java:124)    
    at com.sun.enterprise.naming.impl.SerialContext.unbind(SerialContext.java:740)    
    at javax.naming.InitialContext.unbind(InitialContext.java:435)    
    at javax.naming.InitialContext.unbind(InitialContext.java:435)    
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.unpublishObject(GlassfishNamingManagerImpl.java:246)    
    at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl.unbindFromComponentNamespace(ComponentEnvManagerImpl.java:355)    
    at com.sun.enterprise.web.WebModuleContextConfig.unbindFromComponentNamespace(WebModuleContextConfig.java:454)    
    at com.sun.enterprise.web.WebModuleContextConfig.stop(WebModuleContextConfig.java:447)    
    at com.sun.enterprise.web.WebModuleContextConfig.lifecycleEvent(WebModuleContextConfig.java:174)    
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:149)    
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:5603)    
    at com.sun.enterprise.web.WebModule.stop(WebModule.java:527)    
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1049)    
    at com.sun.enterprise.web.WebContainer.unloadWebModule(WebContainer.java:2230)    
    at com.sun.enterprise.web.WebContainer.unloadWebModule(WebContainer.java:2185)    
    at com.sun.enterprise.web.WebApplication.stop(WebApplication.java:159)    
    at org.glassfish.internal.data.EngineRef.stop(EngineRef.java:169)    
    at org.glassfish.internal.data.ModuleInfo.stop(ModuleInfo.java:302)    
    at org.glassfish.internal.data.ApplicationInfo.stop(ApplicationInfo.java:329)    
    at com.sun.enterprise.v3.server.ApplicationLifecycle.unload(ApplicationLifecycle.java:998)    
    at com.sun.enterprise.v3.server.ApplicationLifecycle.disable(ApplicationLifecycle.java:1970)    
    at com.sun.enterprise.v3.server.ApplicationLoaderService.stopApplication(ApplicationLoaderService.java:454)    
    at com.sun.enterprise.v3.server.ApplicationLoaderService.preDestroy(ApplicationLoaderService.java:422)    
    at com.sun.hk2.component.AbstractCreatorInhabitantImpl.dispose(AbstractCreatorInhabitantImpl.java:83)    
    at com.sun.hk2.component.SingletonInhabitant.release(SingletonInhabitant.java:81)    
    at com.sun.hk2.component.EventPublishingInhabitant.release(EventPublishingInhabitant.java:108)    
    at com.sun.hk2.component.LazyInhabitant.release(LazyInhabitant.java:133)    
    at com.sun.enterprise.v3.server.AppServerStartup.stop(AppServerStartup.java:429)    
    at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.stop(GlassFishImpl.java:88)    
    at com.sun.enterprise.glassfish.bootstrap.GlassFishDecorator.stop(GlassFishDecorator.java:68)    
    at com.sun.enterprise.v3.admin.StopServer.doExecute(StopServer.java:70)    
    at com.sun.enterprise.v3.admin.StopDomainCommand.execute(StopDomainCommand.java:95)    
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)    
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.run(CommandRunnerImpl.java:377)    
|#]    
1
Please add the exception stacktrace to the question. - unwichtich
Do you actually have any problems caused by this exception or does this just appear in the log file on re/undeployment? - unwichtich
We have been trying numerous things over the past few days and haven't seen binding issues (not sure what changed). We are seeing issues when reloading/redeploying apps and I've created question xxx for that. - sdoca

1 Answers

0
votes

Shouldn't this require you to repackage your two wars into an ear, with a single copy of the jar containing the EJBs?