You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2012/01/12 21:34:28 UTC

DO NOT REPLY [Bug 52461] New: java.lang.IllegalArgumentException: URI scheme is not "file" is thrown in ContextConfig.getDefaultWebXmlFragment

https://issues.apache.org/bugzilla/show_bug.cgi?id=52461

             Bug #: 52461
           Summary: java.lang.IllegalArgumentException: URI scheme is not
                    "file" is thrown in
                    ContextConfig.getDefaultWebXmlFragment
           Product: Tomcat 7
           Version: 7.0.23
          Platform: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: violetagg@apache.org
    Classification: Unclassified


Hello,

I have a project that embeds Apache Tomcat in OSGi. I provide the default
web.xml from my bundles (jar files) directly; I do not provide it in a separate
folder on the file system. 

I am using Apache Tomcat 7.0.21, but now I want to migrate to Apache Tomcat
7.0.23. 

Unfortunately there is a change between these two versions and with Apache
Tomcat 7.0.23 the following exception is thrown:

Caused by: java.lang.IllegalArgumentException: URI scheme is not "file"
    at java.io.File.<init>(File.java:366)
    at
org.apache.catalina.startup.ContextConfig.getDefaultWebXmlFragment(ContextConfig.java:1317)
    at
org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1168)
    at
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:828)
    at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
    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:5148)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 71 more|

In OSGi environment URI scheme is not "file", but "bundleresource". 
The call "globalWebXml.getSystemId()" in OSGi environment returns
"bundleresource://94.fwk2102834054/conf/web.xml"

I would like to propose a change (below) in
ContextConfig.getDefaultWebXmlFragment() method because there is no guarantee
that the URI scheme will always be "file". The patch is made against 7.0.x
trunc.

I’m looking forward to your comments.

Best Regards
Violeta Georgieva

Patch proposal:

Index: ContextConfig.java
===================================================================
--- ContextConfig.java    (revision 1230565)
+++ ContextConfig.java    (working copy)
@@ -29,7 +29,6 @@
 import java.io.UnsupportedEncodingException;
 import java.net.JarURLConnection;
 import java.net.MalformedURLException;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -1324,20 +1323,24 @@

         if (globalWebXml != null) {
             try {
-                File f = new File(new URI(globalWebXml.getSystemId()));
-                globalTimeStamp = f.lastModified();
-            } catch (URISyntaxException e) {
+                URL f = new URL(globalWebXml.getSystemId());
+                globalTimeStamp = f.openConnection().getLastModified();
+            } catch (MalformedURLException e) {
                 globalTimeStamp = -1;
-            }
+            } catch (IOException e) {
+                globalTimeStamp = -1;
+            }
         }

         if (hostWebXml != null) {
             try {
-                File f = new File(new URI(hostWebXml.getSystemId()));
-                hostTimeStamp = f.lastModified();
-            } catch (URISyntaxException e) {
+                URL f = new URL(hostWebXml.getSystemId());
+                hostTimeStamp = f.openConnection().getLastModified();
+            } catch (MalformedURLException e) {
                 hostTimeStamp = -1;
-            }
+            } catch (IOException e) {
+                globalTimeStamp = -1;
+            }
         }

         if (entry != null && entry.getGlobalTimeStamp() == globalTimeStamp &&

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 52461] java.lang.IllegalArgumentException: URI scheme is not "file" is thrown in ContextConfig.getDefaultWebXmlFragment

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52461

--- Comment #2 from violetagg@apache.org 2012-01-14 18:20:33 UTC ---
Thank you!
Violeta

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 52461] java.lang.IllegalArgumentException: URI scheme is not "file" is thrown in ContextConfig.getDefaultWebXmlFragment

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52461

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
         OS/Version|                            |All

--- Comment #1 from Mark Thomas <ma...@apache.org> 2012-01-13 20:46:41 UTC ---
Fixed in trunk and 7.0.x and will be included in 7.0.24 onwards.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org