https://issues.apache.org/bugzilla/show_bug.cgi?id=51644
Bug #: 51644
Summary: Unable to deploy applications with the name a#b.xml
Product: Tomcat 7
Version: 7.0.19
Platform: All
OS/Version: All
Status: NEW
Severity: regression
Priority: P2
Component: Catalina
AssignedTo: [email protected]
ReportedBy: [email protected]
Classification: Unclassified
When I try to deploy a context with the name "a#b.xml" I get the following
exception.
SEVERE: Unable to process JNDI URL [jndi:/localhost/sample/one/WEB-INF/classes]
for annotations
java.io.FileNotFoundException: jndi:/localhost/sample/one/WEB-INF/classes
at
org.apache.naming.resources.DirContextURLConnection.list(DirContextUR
LConnection.java:452)
at
org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(Cont
extConfig.java:1901)
at
org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(Conte
xtConfig.java:1828)
at
org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.jav
a:1295)
at
org.apache.catalina.startup.ContextConfig.configureStart(ContextConfi
g.java:896)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfi
g.java:322)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa
se.java:89)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContex
t.java:5103)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:812)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:78
7)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607)
at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.ja
va:633)
at
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.j
ava:558)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468
)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1363)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
:294)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycl
eSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBa
se.java:89)
at
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBas
e.java:1233)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p
rocessChildren(ContainerBase.java:1391)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.p
rocessChildren(ContainerBase.java:1401)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.r
un(ContainerBase.java:1380)
at java.lang.Thread.run(Thread.java:619)
I would have expected the application to be available in the URI a/b. The bug
seems to be in the "list()" method "of DirContextURLConnection.java. The method
assumes that context name does not have any "/" characters in it. See the
developer note just before the "if" block. I have added the "else if" condition
that seems to have solved the problem for me.
try {
String file = getURL().getFile();
// This will be of the form /<hostname>/<contextpath>/file name
// if <contextpath> is not empty otherwise this will be of the
// form /<hostname>/file name
// Strip off the hostname and the contextpath
int start;
if(context instanceof ProxyDirContext &&
"".equals(((ProxyDirContext)context).getContextPath())){
start = file.indexOf('/',1);
}
else if(context instanceof ProxyDirContext){
start="/".length()
+((ProxyDirContext)context).getHostName().length()
+((ProxyDirContext)context).getContextPath().length();
/*
* Seems like a bug in Tomcat. below was the code in
Tomcat.
* How can it handle contextpath like "/sample/one". It
cannot
*/
//start = file.indexOf('/', file.indexOf('/', 1) + 1);
} else
start = file.indexOf('/', file.indexOf('/', 1) + 1);
NamingEnumeration<NameClassPair> enumeration =
context.list(file.substring(start));
while (enumeration.hasMoreElements()) {
NameClassPair ncp = enumeration.nextElement();
result.addElement(ncp.getName());
}
} catch (NamingException e) {
--
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: [email protected]
For additional commands, e-mail: [email protected]