Details
-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
1.0.0.CR6
-
None
Description
Let imagine, we've TestCase like this:
@RunWith(Arquillian.class) public class CopyOfJaxrsJSApiTestCase { @Deployment(name="dep1") public static Archive<?> deploy1() { WebArchive war = ShrinkWrap.create(WebArchive.class, "jaxrsnoap.war"); war.addPackage(HttpRequest.class.getPackage()); war.addPackage(CopyOfJaxrsJSApiTestCase.class.getPackage()); war.addAsWebInfResource(WebXml.get( "<servlet-mapping>\n" + " <servlet-name>javax.ws.rs.core.Application</servlet-name>\n" + " <url-pattern>/myjaxrs1/*</url-pattern>\n" + "</servlet-mapping>\n" + "\n"),"web.xml"); return war; } @Deployment(name="dep2") public static Archive<?> deploy2() { WebArchive war = ShrinkWrap.create(WebArchive.class, "jaxrsnoap.war"); war.addPackage(HttpRequest.class.getPackage()); war.addPackage(CopyOfJaxrsJSApiTestCase.class.getPackage()); war.addAsWebInfResource(WebXml.get( "<servlet-mapping>\n" + " <servlet-name>javax.ws.rs.core.Application</servlet-name>\n" + " <url-pattern>/myjaxrs2/*</url-pattern>\n" + "</servlet-mapping>\n" + "\n"),"web.xml"); return war; } private static String performCall(String urlPattern) throws Exception { return HttpRequest.get("http://localhost:8080/jaxrsnoap/" + urlPattern, 5, TimeUnit.SECONDS); } @Test @OperateOnDeployment("dep1") public void testJaxRsWithNoApplication1() throws Exception { String result = performCall("myjaxrs1/jsapi"); Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><customer><first>John</first><last>Citizen</last></customer>", result); } @Test @OperateOnDeployment("dep2") public void testJaxRsWithNoApplication2() throws Exception { String result = performCall("myjaxrs2/jsapi"); Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><customer><first>John</first><last>Citizen</last></customer>", result); } }
We've two deployments, but current implementation packages both of them as the same JAR (accidentally). The present behavior is that only the first one WAR is deployed, so the second test (testJaxRsWithNoApplication2) fails. In the LOG file I see:
10:12:59,954 INFO [org.jboss.as.server.deployment.repository.impl] (pool-1-thread-2) JBAS014900: Content added at location /home/pjanouse/github/jboss-as/testsuite/integration/basic/target/jbossas/standalone/data/content/c1/6dd22b512f47bc27788501e587813215429ce2/content 10:12:59,959 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) Starting deployment of "jaxrsnoap.war" 10:13:00,160 INFO [org.jboss.as.arquillian] (MSC service thread 1-7) Arquillian deployment detected: ArquillianConfig[service=jboss.arquillian.config."jaxrsnoap.war",unit=jaxrsnoap.war,tests=[org.jboss.as.test.integration.jaxrs.jsapi.JaxrsJSApiTestCase, org.jboss.as.test.integration.jaxrs.jsapi.CopyOfJaxrsJSApiTestCase]] 10:13:00,255 INFO [org.jboss.web] (MSC service thread 1-3) registering web context: /jaxrsnoap 10:13:00,281 INFO [org.jboss.as.server.controller] (pool-1-thread-2) Deployed "jaxrsnoap.war" 10:13:00,320 INFO [org.jboss.as.server.deployment.repository.impl] (pool-1-thread-2) JBAS014900: Content added at location /home/pjanouse/github/jboss-as/testsuite/integration/basic/target/jbossas/standalone/data/content/43/9562609e3b8fdf3afdd6d456fc5d8db1132fca/content 10:13:01,045 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) Stopped deployment jaxrsnoap.war in 42ms 10:13:01,055 INFO [org.jboss.as.server.deployment.repository.impl] (pool-1-thread-2) JBAS014901: Content removed from location /home/pjanouse/github/jboss-as/testsuite/integration/basic/target/jbossas/standalone/data/content/c1/6dd22b512f47bc27788501e587813215429ce2/content 10:13:01,056 INFO [org.jboss.as.server.controller] (pool-1-thread-2) Undeployed "jaxrsnoap.war" 10:13:01,067 ERROR [org.jboss.as.controller.management-operation] (pool-1-thread-1) JBAS014612: Operation ("undeploy") failed - address: ([("deployment" => "jaxrsnoap.war")]): java.util.NoSuchElementException: No child 'runtime-name' exists at org.jboss.dmr.ModelValue.requireChild(ModelValue.java:362) [jboss-dmr-1.1.1.Final.jar:] at org.jboss.dmr.ModelNode.require(ModelNode.java:812) [jboss-dmr-1.1.1.Final.jar:] at org.jboss.as.server.deployment.DeploymentUndeployHandler.execute(DeploymentUndeployHandler.java:58) at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:339) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:234) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:170) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.CompositeOperationHandler.execute(CompositeOperationHandler.java:84) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:339) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:234) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:170) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.ModelControllerImpl$DefaultPrepareStepHandler.execute(ModelControllerImpl.java:432) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:339) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:234) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:170) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:119) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler.doExecute(ModelControllerClientOperationHandler.java:121) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.controller.remote.ModelControllerClientOperationHandler$ExecuteRequestHandler$1.execute(ModelControllerClientOperationHandler.java:98) [jboss-as-controller-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.protocol.mgmt.AbstractMessageHandler$3$1.doExecute(AbstractMessageHandler.java:268) [jboss-as-protocol-7.1.0.CR1-SNAPSHOT.jar:] at org.jboss.as.protocol.mgmt.AbstractMessageHandler$AsyncTaskRunner.run(AbstractMessageHandler.java:424) [jboss-as-protocol-7.1.0.CR1-SNAPSHOT.jar:] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27] at java.lang.Thread.run(Thread.java:662) [:1.6.0_27]
As you can see, there is an attempt to deploy jaxrsnoap.war again, ARQ is thinking it's OK and after that it tries to undeploy them two times too.
I've created this scenario by my error, but I'm expecting:
a) second attempt of deploy raises exception as the same WAR application is already deployed (similar to produce error if there are two deployment without the different name)
b) the second attempt at least re-deploy the application
Ad B) AS7 admin console doesn't allow to deploy some WAR with the same name more than once. I'm preferring behavior as ad A)
Make sense for you?