[jboss-jira] [JBoss JIRA] (AS7-5909) UnsupportedOperationException if a module's resource root defined in jboss-deployment-structure.xml does not exist

Stuart Douglas (JIRA) jira-events at lists.jboss.org
Thu Nov 22 19:21:22 EST 2012


     [ https://issues.jboss.org/browse/AS7-5909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stuart Douglas resolved AS7-5909.
---------------------------------

    Fix Version/s: 7.2.0.Alpha1
                   7.1.4.Final (EAP)
                       (was: Open To Community)
       Resolution: Done

    
> UnsupportedOperationException if a module's resource root defined in jboss-deployment-structure.xml does not exist
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: AS7-5909
>                 URL: https://issues.jboss.org/browse/AS7-5909
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: Server
>    Affects Versions: 7.2.0.Alpha1
>            Reporter: Brad Maxwell
>            Assignee: Stuart Douglas
>            Priority: Minor
>             Fix For: 7.2.0.Alpha1, 7.1.4.Final (EAP)
>
>
> An empty test.war with this will throw UnsupportedOperationException if a resource-root path is specified that does not exist.
> <?xml version="1.0" encoding="UTF-8"?>
> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
>   <module name="deployment.example">
>     <resources>
>       <resource-root path="../../../../../../../../work/workspace/release/build/classes/main" />
>     </resources>
>   </module>
> </jboss-deployment-structure>
> Here is the exception:
> 11:56:53,819 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015959: Additional resource root /work/workspace/release/build/classes/main added via jboss-deployment-structure.xml does not exist
> 11:56:53,821 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC00001: Failed to start service jboss.deployment.unit."test.war".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."test.war".STRUCTURE: JBAS018733: Failed to process phase STRUCTURE of deployment "test.war"
> 	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:126) [jboss-as-server-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
> 	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_21]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_21]
> 	at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_21]
> Caused by: java.lang.UnsupportedOperationException
> 	at java.util.Collections$UnmodifiableList$1.remove(Collections.java:1183) [rt.jar:1.6.0_21]
> 	at org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser.deploy(DeploymentStructureDescriptorParser.java:201) [jboss-as-server-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
> 	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.2.0.Alpha1-SNAPSHOT.jar:7.2.0.Alpha1-SNAPSHOT]
> 	... 5 more
> The issue looks like:
> org.jboss.as.server.deployment.module.descriptor.DeploymentStructureDescriptorParser itr.remove() is called, but the additionalModule.getResourceRoots is returning the list as Collections.unmodifiableList.  
> It looks like if a <deployment> lists resource roots that do not exist, it just logs a warning.  So I think the fix is to remove the Collections.unmodifiableList from ModuleStructureSpec, but I'm not sure if there was a reason unmodifiableList was added.
>                      final ListIterator<ResourceRoot> itr = additionalModule.getResourceRoots().listIterator();
>                      while (itr.hasNext()) {
>                          final ResourceRoot resourceRoot = itr.next();
>                          if(!resourceRoot.getRoot().exists()) {
>                              ServerLogger.DEPLOYMENT_LOGGER.additionalResourceRootDoesNotExist(resourceRoot.getRoot().getPathName());
>                              itr.remove();
>                          }
>                      }
> org.jboss.as.server.deployment.module.descriptor.ModuleStructureSpec
>       class ModuleStructureSpec {
>       
>   
>           private final List<ResourceRoot> resourceRoots = new ArrayList<ResourceRoot>();
>           public List<ResourceRoot> getResourceRoots() {
>               return Collections.unmodifiableList(resourceRoots);
>           }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list