[
https://issues.apache.org/jira/browse/AXIS2-5414?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thierry Guérin updated AXIS2-5414:
----------------------------------
Attachment: patch.diff
patch & test
> classpath: paths containing spaces are ignored
> ----------------------------------------------
>
> Key: AXIS2-5414
> URL: https://issues.apache.org/jira/browse/AXIS2-5414
> Project: Axis2
> Issue Type: Bug
> Components: jaxws
> Affects Versions: 1.6.2
> Environment: tested on Windows, but should appear on linux too
> Reporter: Thierry Guérin
> Labels: patch
> Attachments: patch.diff
>
>
> When the classpath contains paths with spaces, the classes contained in this
> path are ignored. An easy way to reproduce this is to have your App Server
> installed in a path that contains spaces. When calling a webService, the
> following exception is raised:
> DEBUG org.apache.axis2.transport.http.AxisServlet [OnDemandLogger.java:85]
> org.apache.axis2.AxisFault: javax.xml.bind.UnmarshalException
> - with linked exception:
> [javax.xml.bind.UnmarshalException: unexpected element
> (uri:"http://my/namespace", local:"myMethod"). Expected elements are (none)]
> The only way to find out why this happening is to look at the logs in debug
> mode and spot the "DEBUG org.apache.axis2.jaxws.message.databinding.JAXBUtils
> [JAXBUtils.java:1051] getClassesFromJarFile failed to get Classes", which is
> not really explanatory on the source of the problem.
> The bug lies with the class ClassFinderImpl which calls url.toURI() with an
> URL that contains spaces. the URI class is pretty strict about RFC 2396 and
> throws an exception if spaces are not escaped.
> Here's a patch & testcase that solves the problem.
> I first thought about only escaping space and still using url.toURI, but then
> I figured that if the space wasn't escaped, chances were that other
> characters would also not be, and that the url was surely built using
> "file:/" + file.getPath(), so instead url.toURI is used, and when this fails,
> url.getPath() is used.
> Note on the test: as I wanted to make sure that the class could be loaded
> from a url path both correctly escaped and not escaped, the test class is
> dumped in a temporary jar and getClassesFromJarFile is called. Maybe there's
> a simpler way to do this.
> The priority is major because I feel that the symptoms are quite obscure and
> require debugging to figure out what's wrong; feel free to set it to minor as
> the workaround is quite simple.
> final note on the patch: while writing the test, I found out that the jars
> read by getClassesFromJarFile where not closed, so I fixed it. the patch
> includes the fix, but should I open a separate bug?
--
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]