[
https://issues.apache.org/jira/browse/AXIS2-2592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Deepal Jayasinghe reassigned AXIS2-2592:
----------------------------------------
Assignee: Deepal Jayasinghe
> AxisServlet does not respect Servlet Context paths with slashes
> ---------------------------------------------------------------
>
> Key: AXIS2-2592
> URL: https://issues.apache.org/jira/browse/AXIS2-2592
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: kernel
> Affects Versions: nightly
> Environment: Tomcat 6 or Glassfish 9 on Windows XP.
> Reporter: Steven E. Harris
> Assigned To: Deepal Jayasinghe
>
> AxisServlet.initContextRoot() inspects the Servlet parameter
> "axis2.find.context" to figure out whether it should use the "contextRoot"
> parameter specified in axis2.xml, or attempt to discover the Servlet's
> context path from the current request, per this discussion:
> "svn commit: r468722 ..."
> http://mail-archives.apache.org/mod_mbox/ws-axis-cvs/200610.mbox/[EMAIL
> PROTECTED]
> The problem lies with the following portion of initContextRoot():
> if (contextRoot == null || contextRoot.trim().length() == 0) {
> String[] parts = JavaUtils.split(req.getContextPath(), '/');
> if (parts != null) {
> for (int i = 0; i < parts.length; i++) {
> if (parts[i].length() > 0) {
> contextRoot = parts[i];
> break;
> }
> }
> }
> if (contextRoot == null || req.getContextPath().equals("/")) {
> contextRoot = "/";
> }
> configContext.setContextRoot(contextRoot);
> }
> For some reason, this code takes the current request's reported context path
> and splits it on slashes, taking only the first token as the context path.
> This fails with Servlets deployed with context paths containing slashes.
> As an example, my Servlet is deployed with a context path of "2007/04" and an
> Axis2 "servicePath" of "ws". That is, services should be found via
> http://<my server>/2007/04/ws/<service name>
> I specified "2007/04" in axis2.xml as my "contextRoot", but Axis2 winds up
> ignoring this parameter anyway if the "axis2.find.context" Servlet parameter
> is not set to "false". Upon the first real request arriving,
> AxisServlet.initContextRoot() runs. It decides to try to honor the Servlet's
> context path, and retrieves it via HttpServletRequest.getContextPath(). This
> function returns "/2007/04". But the "split" operation chops this up and
> selects "2007" as the the context root, then proceeds to set this as the
> configurationContext's contextRoot.
> This causes the configurationContext's serviceContextPath value to get
> rewritten as "2007/ws", which fails to locate a service.
> The fix is to not try splitting up the HttpServletRequest's context path.
> Perhaps you want to remove the leading slash, but there's no reason that we
> should be only honoring the name components before the first slash beyond the
> leading one.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]