Uploaded image for project: 'OpenEJB'
  1. OpenEJB
  2. OPENEJB-1986

Deployment of web application with white spaces in its name fails due to unencoded characters

    XMLWordPrintableJSON

Details

    Description

      Hi,

      The deployment of web applications with special characters (such as white spaces) in the name fails with the following exception (tested on Tomee Webprofile 1.5.1).

      To reproduce simply deploy the attached test application:

      SEVERE: Unable to deploy collapsed ear in war StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Space AppTest]
      java.lang.IllegalArgumentException
      at java.net.URI.create(URI.java:842)
      at org.apache.openejb.config.AutoConfig.resolveDestinationLinks(AutoConfig.java:582)
      at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:183)
      at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:338)
      at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:827)
      at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:974)
      at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:901)
      at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:118)
      at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
      at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
      at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
      at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
      Caused by: java.net.URISyntaxException: Illegal character in path at index 5: Space AppTest
      at java.net.URI$Parser.fail(URI.java:2809)
      at java.net.URI$Parser.checkChars(URI.java:2982)
      at java.net.URI$Parser.parseHierarchical(URI.java:3066)
      at java.net.URI$Parser.parse(URI.java:3024)
      at java.net.URI.<init>(URI.java:578)
      at java.net.URI.create(URI.java:840)
      ... 22 more

      The exception is due to incorrect construction of URL in org.apache.openejb.config.AutoConfig class.
      To make special characters legal in this case, they need to be first encoded before passing them to the URI factory method create.
      For example:

      URI.create(URLEncoder.encode(webModule.getModuleId()));

      I’ve successfully tested this fix using the standard java.net.Encoder (as I could not find any other internal encoding utility).

      Thanks and regards,
      Polina

      Attachments

        1. Space AppTest.war
          2 kB
          Polina Genova

        Activity

          People

            romain.manni-bucau Romain Manni-Bucau
            polina.genova Polina Genova
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: