[
https://issues.apache.org/jira/browse/AXIS2-3354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12975217#action_12975217
]
Mauro Molinari commented on AXIS2-3354:
---------------------------------------
Using absolute URIs is not a solution for us, because services and schemas are
deployed inside our own web application and we can't know the absolute URI
where it is deployed in a reliable way.
I think the use of relative URIs would not be a security risk as long as you
provide a mechanism to control where Axis2 "can go" to retrieve resources. I
mean, if only resources inside WEB-INF/services where allowed, you couldn't get
conf/axis2.xml exposed. Otherwise, if only WSDLs and XSDs would be allowed,
conf/axis2.xml could not be exposed in any case, because it's neither a WSDL
nor an XSD.
An alternative approach would be to provide some sort of "marker" to use in the
URI to let Axis2 know that it has to search for a resource in a specific
location, where you could deploy your shared schemas/resources.
Please note that CXF has no issue here and you can easily deploy shared schemas
and use relative paths to get to them.
> Allow for sharing XSD schemas between services
> ----------------------------------------------
>
> Key: AXIS2-3354
> URL: https://issues.apache.org/jira/browse/AXIS2-3354
> Project: Axis2
> Issue Type: Improvement
> Components: codegen
> Affects Versions: 1.5, 1.3
> Reporter: Mauro Molinari
> Assignee: Srinath Perera
> Attachments: patch.txt
>
>
> Suppose I have the following structure:
> The WSDLs for MyService1 and MyService2 are in the following folders,
> respectively:
> contextpath/WEB-INF/services/MyService1/META-INF/
> contextpath/WEB-INF/services/MyService2/META-INF/
> I want them to share Common.xsd: as of now, it seems that there's no way to
> get this to work.
> If I put it here:
> contextpath/WEB-INF/services/
> and the xsd:import schemaLocation in the WSDLs points to "../../Common.xsd",
> Axis2 can find the XSD and processes the services correctly, but when it
> substitutes the link to it in the WSDLs, it generates the following links:
> MyService1?xsd=../../Common.xsd (in MyService1 WSDL)
> MyService2?xsd=../../Common.xsd (in MyService2 WSDL)
> The problem is that from an HTTP client point of view, this translates to
> path contextpath/Common.xsd: in fact, if you try to write the link:
> http://server:8080/contextpath/services/MyService1?xsd=../../Common.xsd
> a "file not found" error is given.
> Another clue is that if I try to generate a client pointing to
> http://server:8080/contextpath/services/MyService1?wsdl, WSDL2Java says that
> it cannot retrieve the schema.
> By manually typing:
> http://server:8080/contextpath/services/MyService1?xsd=../Common.xsd
> I see that the schema can actually be found; but if I replace the xsd:import
> in the original WSDL so that the schemaLocation points to "../Common.xsd",
> then Axis2 can't find it anymore, because it searches for it in
> contextpath/WEB-INF/services/MyService1/ and the generation of the WSDL fails.
> So, my request is this: add a supported way to share schemas (and maybe WSDLs
> portions) between services.
> Maybe the system should allow a default common repository where shared
> schemas and WSDLs can be placed? Or should the way in which Axis2 rewrites
> the schemaLocation link in the WSDL when imported resources are mapped to
> file outside the current folder simply fixed?
--
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]