users@glassfish.java.net

Re: Embedded Glassfish 3.1 (re)deployment exception question

From: Marina Vatkina <marina.vatkina_at_oracle.com>
Date: Thu, 24 Mar 2011 11:44:24 -0700

Please file a bug (under security - we'll go from there). I can
reproduce it also by modifying the devtest - I'll add a note to the bug.

thanks,
-marina

NBW wrote:
> I have a JUnit test that starts up embedded glassfish 3.1 and deploys
> a module which contains EJBs. I placed the container init code in a
> @Before method so that it will be started fresh for each test like so:
>
> //Set up the embedded EJB containers env properties
> Map<String, Object> p = new HashMap<String, Object>();
> p.put(EJBContainer.APP_NAME, "myapp");
> p.put(EJBContainer.MODULES, new File("out/production/myapp"));
>
> p.put("org.glassfish.ejb.embedded.glassfish.installation.root",
> "C:/glassfish3/glassfish");
> ejbC = EJBContainer.createEJBContainer(p);
>
> I also have a @After method which closes the container after each test
> like :
>
> @After
> public void tearDown() throws Exception {
> if (ejbC != null)
> ejbC.close();
> }
>
> The problem I am having is that the first test method deploys and runs
> fine, however, subsequent test methods fail on deployment with the
> following exception thrown by the EJBContainer.createEJBContainer(p)
> line of code above:
>
> Mar 24, 2011 10:21:32 AM com.sun.ejb.containers.EjbContainerUtilImpl
> deployEJBTimerService
> INFO: Loading EJBTimerService. Please wait.
> classLoader = WebappClassLoader (delegate=true;
> repositories=WEB-INF/classes/)
> SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7_at_167a209
> Mar 24, 2011 10:21:32 AM
> org.hibernate.validator.engine.resolver.DefaultTraversableResolver
> detectJPA
> INFO: Instantiated an instance of
> org.hibernate.validator.engine.resolver.JPATraversableResolver.
> Mar 24, 2011 10:21:32 AM
> org.eclipse.persistence.session.file:/C:/Users/nwhite/AppData/Local/Temp/gfembed8734725078398943370tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> INFO: EclipseLink, version: Eclipse Persistence Services -
> 2.2.0.v20110202-r8913
> Mar 24, 2011 10:21:36 AM
> org.eclipse.persistence.session.file:/C:/Users/nwhite/AppData/Local/Temp/gfembed8734725078398943370tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> INFO:
> file:/C:/Users/nwhite/AppData/Local/Temp/gfembed8734725078398943370tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> login successful
> Mar 24, 2011 10:21:36 AM com.sun.ejb.containers.TimerBeanContainer <init>
> INFO: [TimerBeanContainer] Created TimerBeanContainer: TimerBean
> Mar 24, 2011 10:21:36 AM com.sun.ejb.containers.BaseContainer
> initializeHome
> INFO: Portable JNDI names for EJB TimerBean :
> [java:global/ejb-timer-service-app/TimerBean,
> java:global/ejb-timer-service-app/TimerBean!com.sun.ejb.containers.TimerLocal]
> classLoader = WebappClassLoader (delegate=true;
> repositories=WEB-INF/classes/)
> SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7_at_167a209
> Mar 24, 2011 10:21:36 AM org.glassfish.api.ActionReport failure
> SEVERE: Exception while loading the app
> Mar 24, 2011 10:21:36 AM
> org.eclipse.persistence.session.file:/C:/Users/nwhite/AppData/Local/Temp/gfembed8734725078398943370tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> INFO:
> file:/C:/Users/nwhite/AppData/Local/Temp/gfembed8734725078398943370tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> logout successful
> Mar 24, 2011 10:21:36 AM com.sun.ejb.containers.EjbContainerUtilImpl
> deployEJBTimerService
> WARNING: Cannot deploy or load EJBTimerService:
> org.glassfish.deployment.common.DeploymentException: Error in linking
> security policy for ejb-timer-service-app -- Inconsistent Module State
> at
> com.sun.enterprise.security.SecurityUtil.linkPolicyFile(SecurityUtil.java:335)
> at
> com.sun.enterprise.security.SecurityDeployer.linkPolicies(SecurityDeployer.java:279)
> at
> com.sun.enterprise.security.SecurityDeployer.access$100(SecurityDeployer.java:81)
> at
> com.sun.enterprise.security.SecurityDeployer$AppDeployEventListener.event(SecurityDeployer.java:114)
> at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)
> at
> org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:262)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
> at
> com.sun.ejb.containers.EjbContainerUtilImpl.deployEJBTimerService(EjbContainerUtilImpl.java:547)
> at
> com.sun.ejb.containers.EjbContainerUtilImpl.getEJBTimerService(EjbContainerUtilImpl.java:289)
> at
> com.sun.ejb.containers.EjbContainerUtilImpl.getEJBTimerService(EjbContainerUtilImpl.java:284)
> at
> com.sun.ejb.containers.EjbContainerUtilImpl.getEJBTimerService(EjbContainerUtilImpl.java:269)
> at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:755)
> at
> com.sun.ejb.containers.AbstractSingletonContainer.<init>(AbstractSingletonContainer.java:141)
> at
> com.sun.ejb.containers.CMCSingletonContainer.<init>(CMCSingletonContainer.java:77)
> at
> com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:115)
> at
> org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:234)
> at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:290)
> at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:101)
> at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
> at
> org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
> at
> com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
> at
> org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:193)
> at
> org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:142)
> at
> org.glassfish.ejb.embedded.EJBContainerImpl.deploy(EJBContainerImpl.java:135)
> at
> org.glassfish.ejb.embedded.EJBContainerProviderImpl.createEJBContainer(EJBContainerProviderImpl.java:132)
> at
> javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:127)
>
> During the shutdown process after the first test runs I noticed the
> following:
>
> Mar 24, 2011 10:21:19 AM com.sun.ejb.containers.TimerBeanContainer
> doConcreteContainerShutdown
> INFO: [TimerBeanContainer] Shutdown() called....
> Mar 24, 2011 10:21:19 AM com.sun.ejb.containers.EJBTimerService onShutdown
> INFO: EJB5122:EJB Timer Service shutdown at [2011/03/24 10:21:19]
> Mar 24, 2011 10:21:19 AM com.sun.enterprise.web.WebContainer
> unloadWebModule
> *SEVERE: WEB0162: [WebContainer] Undeployment failed for context
> [/ejb-timer-service-app]*
> Mar 24, 2011 10:21:19 AM
> org.eclipse.persistence.session.file:/C:/Users/nwhite/AppData/Local/Temp/gfembed671660783214676050tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> INFO:
> file:/C:/Users/nwhite/AppData/Local/Temp/gfembed671660783214676050tmp/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App
> logout successful
>
> Not sure if that is related. Thoughts?
>
> -Noah