Bootstrap.undeploy doesn't work properly
gumnaam.suri Mar 28, 2008 9:15 AMI have a test case that extends from jboss's BaseTestCase
Here's the code for the deploy and undeploy methods.
private static AssembledDirectory jar; public static void deploy() { jar = AssembledContextFactory.getInstance().create("ejbTestCase.jar"); jar.addResources(EchoServiceLocal.class, new String[]{"**/*.class"}, new String[]); try { Bootstrap.getInstance().deploy(jar); } catch (DeploymentException e) { e.printStackTrace(); throw new RuntimeException("Unable to deploy", e); } } public static void undeploy() { try { Bootstrap.getInstance().undeploy(jar); AssembledContextFactory.getInstance().remove(jar); } catch (DeploymentException e) { e.printStackTrace(); throw new RuntimeException("Unable to undeploy", e); }
This works correctly only if I have one single test method in my class.
If I have 2+ methods, The deploy/undeploy get called before and after each test. But the ejb's are never undeployed by the call to
Bootstrap.getInstance().undeploy(jar);
So when the deploy() method is called for the second test method I get the following exception
ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Real: name=vfs://12067092458921/ state=PostClassLoader mode=Manual requiredState=Real org.jboss.deployers.spi.DeploymentException: Error deploying ejbTestCase.jar: Error creating ejb container EchoService: Container jboss.j2ee:jar=ejbTestCase.jar,name=EchoService,service=EJB3,VMID=b3b0ab650f4bdfe2:-1951e759:118f579d2d3:-8000 + is already registered at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:158) at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:88) at org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer.internalDeploy(AbstractVFSRealDeployer.java:45) at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50) at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:169) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:853) at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:794) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411) at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:498) at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:506) at org.jboss.embedded.DeploymentGroup.process(DeploymentGroup.java:127) at org.jboss.embedded.Bootstrap.deploy(Bootstrap.java:327) at com.cybertrust.ejbtest.ejb.EchoServiceLocalTest.deploy(EchoServiceLocalTest.java:43) 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.jboss.embedded.junit.BaseTestCase.setUp(BaseTestCase.java:70)