You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "Lambert, Michael" <mi...@michaellambert.com> on 2014/07/02 01:46:58 UTC

schemaLocation rewrite

I have a wsdl that is being published using the following configuration:

<jaxws:endpoint id="userService"
wsdlLocation="classpath:/service/user-soap-v1.wsdl"
serviceName="userService:userSoapServicePorts"
endpointName="userService:userSoapServicePort"
implementor="com.healthmedia.ws.wsdl.user.v1.UserServiceImpl"
address="/userService" />

After starting the service I can look at the concrete wsdl class and
everything seems okay. The schemaLocations are all properly re-wrtten:

<xsd:import namespace="urn:healthmedia:schema:user:v1" schemaLocation="
http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
"/>
<xsd:import namespace="urn:healthmedia:schema:common-error:v1"
schemaLocation="
http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd
"/>

But if I then parse either of THESE imported xsd files there is a problem.
The imports in these files are NOT rewritten; the effect is that clients
cannot parse my service contract. Here is the import contents from '"
http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd'
 (note the absence of the '
http://localhost:8080/user-service/userService?xsd=' prefix):

<xsd:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="../external/xml.xsd"/>

This seemed to have worked before. What could i have done to cause this to
happen? SOAPUI no longer can import my contracts.

The code is in github:
https://github.com/MacFlecknoe/service-repository-sample/tree/master/user/service

Thanks again!

Re: schemaLocation rewrite

Posted by Jason Pell <ja...@pellcorp.com>.
Raise a bug with a test project that reproduces problem. Bugs get looked at
quicker when easily reproduced
On 07/07/2014 1:13 PM, "Lambert, Michael" <mi...@michaellambert.com>
wrote:

> Any idea on this guys? My QA team cannot parse the published WSDLs for use
> in thier SOAPUI test. I have to zip up the WSDL in source control and
> manually hand it off to them right now.
>
> Again... when the WSDL file is SUPPLIED to the service via the wsdlLocation
> paramter:
>
> <jaxws:endpoint id="userService"
> wsdlLocation="classpath:/service/user-soap-v1.wsdl"
> serviceName="userService:userSoapServicePorts"
> endpointName="userService:userSoapServicePort" ...>
>
> The URLs in the import statements of the XSD files that cxf exposes are not
> properly re-written.
>
> WSDL-(imports)->XSD this works fine
>
> WSDL-(imports)->XSD->(imports)->XSD this does NOT work fine.
>
> Thanks again.
>
>
>
>
> On Wed, Jul 2, 2014 at 8:37 AM, Lambert, Michael <
> michael@michaellambert.com
> > wrote:
>
> > If this helps this is the ouput of
> >
> http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
> > :
> >
> > This XML file does not appear to have any style information associated
> > with it. The document tree is shown below.
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > xmlns:tns="urn:healthmedia:schema:user:v1"
> > xmlns:dataSource="urn:healthmedia:schema:data-source:v1"
> > xmlns:common="urn:healthmedia:schema:common:v1"
> > attributeFormDefault="unqualified" elementFormDefault="qualified"
> > targetNamespace="urn:healthmedia:schema:user:v1" version="1.0">
> >     <xsd:import namespace="urn:healthmedia:schema:common:v1"
> > schemaLocation="../common/common-v1.xsd"/>
> >     <xsd:import namespace="urn:healthmedia:schema:data-source:v1"
> > schemaLocation="./data-source-v1.xsd"/>
> >     ...
> > </xsd:schema>
> >
> > Notice that the schemaLocation entries are not rewritten and so cannot be
> > retrieved by parsing the xsd.
> >
> > Thanks,
> >
> > Mike
> >
> >
> > On Tue, Jul 1, 2014 at 7:46 PM, Lambert, Michael <
> > michael@michaellambert.com> wrote:
> >
> >> I have a wsdl that is being published using the following configuration:
> >>
> >> <jaxws:endpoint id="userService"
> >>  wsdlLocation="classpath:/service/user-soap-v1.wsdl"
> >>  serviceName="userService:userSoapServicePorts"
> >> endpointName="userService:userSoapServicePort"
> >>  implementor="com.healthmedia.ws.wsdl.user.v1.UserServiceImpl"
> >> address="/userService" />
> >>
> >> After starting the service I can look at the concrete wsdl class and
> >> everything seems okay. The schemaLocations are all properly re-wrtten:
> >>
> >> <xsd:import namespace="urn:healthmedia:schema:user:v1" schemaLocation="
> >>
> http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
> >> "/>
> >> <xsd:import namespace="urn:healthmedia:schema:common-error:v1"
> >> schemaLocation="
> >>
> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd
> >> "/>
> >>
> >> But if I then parse either of THESE imported xsd files there is a
> >> problem. The imports in these files are NOT rewritten; the effect is
> that
> >> clients cannot parse my service contract. Here is the import contents
> from
> >> '"
> >>
> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd
> '
> >>  (note the absence of the '
> >> http://localhost:8080/user-service/userService?xsd=' prefix):
> >>
> >> <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
> >> schemaLocation="../external/xml.xsd"/>
> >>
> >> This seemed to have worked before. What could i have done to cause this
> >> to happen? SOAPUI no longer can import my contracts.
> >>
> >> The code is in github:
> >>
> >>
> https://github.com/MacFlecknoe/service-repository-sample/tree/master/user/service
> >>
> >> Thanks again!
> >>
> >>
> >>
> >>
> >
>

Re: schemaLocation rewrite

Posted by "Lambert, Michael" <mi...@michaellambert.com>.
Any idea on this guys? My QA team cannot parse the published WSDLs for use
in thier SOAPUI test. I have to zip up the WSDL in source control and
manually hand it off to them right now.

Again... when the WSDL file is SUPPLIED to the service via the wsdlLocation
paramter:

<jaxws:endpoint id="userService"
wsdlLocation="classpath:/service/user-soap-v1.wsdl"
serviceName="userService:userSoapServicePorts"
endpointName="userService:userSoapServicePort" ...>

The URLs in the import statements of the XSD files that cxf exposes are not
properly re-written.

WSDL-(imports)->XSD this works fine

WSDL-(imports)->XSD->(imports)->XSD this does NOT work fine.

Thanks again.




On Wed, Jul 2, 2014 at 8:37 AM, Lambert, Michael <michael@michaellambert.com
> wrote:

> If this helps this is the ouput of
> http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
> :
>
> This XML file does not appear to have any style information associated
> with it. The document tree is shown below.
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:tns="urn:healthmedia:schema:user:v1"
> xmlns:dataSource="urn:healthmedia:schema:data-source:v1"
> xmlns:common="urn:healthmedia:schema:common:v1"
> attributeFormDefault="unqualified" elementFormDefault="qualified"
> targetNamespace="urn:healthmedia:schema:user:v1" version="1.0">
>     <xsd:import namespace="urn:healthmedia:schema:common:v1"
> schemaLocation="../common/common-v1.xsd"/>
>     <xsd:import namespace="urn:healthmedia:schema:data-source:v1"
> schemaLocation="./data-source-v1.xsd"/>
>     ...
> </xsd:schema>
>
> Notice that the schemaLocation entries are not rewritten and so cannot be
> retrieved by parsing the xsd.
>
> Thanks,
>
> Mike
>
>
> On Tue, Jul 1, 2014 at 7:46 PM, Lambert, Michael <
> michael@michaellambert.com> wrote:
>
>> I have a wsdl that is being published using the following configuration:
>>
>> <jaxws:endpoint id="userService"
>>  wsdlLocation="classpath:/service/user-soap-v1.wsdl"
>>  serviceName="userService:userSoapServicePorts"
>> endpointName="userService:userSoapServicePort"
>>  implementor="com.healthmedia.ws.wsdl.user.v1.UserServiceImpl"
>> address="/userService" />
>>
>> After starting the service I can look at the concrete wsdl class and
>> everything seems okay. The schemaLocations are all properly re-wrtten:
>>
>> <xsd:import namespace="urn:healthmedia:schema:user:v1" schemaLocation="
>> http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
>> "/>
>> <xsd:import namespace="urn:healthmedia:schema:common-error:v1"
>> schemaLocation="
>> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd
>> "/>
>>
>> But if I then parse either of THESE imported xsd files there is a
>> problem. The imports in these files are NOT rewritten; the effect is that
>> clients cannot parse my service contract. Here is the import contents from
>> '"
>> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd'
>>  (note the absence of the '
>> http://localhost:8080/user-service/userService?xsd=' prefix):
>>
>> <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
>> schemaLocation="../external/xml.xsd"/>
>>
>> This seemed to have worked before. What could i have done to cause this
>> to happen? SOAPUI no longer can import my contracts.
>>
>> The code is in github:
>>
>> https://github.com/MacFlecknoe/service-repository-sample/tree/master/user/service
>>
>> Thanks again!
>>
>>
>>
>>
>

Re: schemaLocation rewrite

Posted by "Lambert, Michael" <mi...@michaellambert.com>.
If this helps this is the ouput of
http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
:

This XML file does not appear to have any style information associated with
it. The document tree is shown below.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:healthmedia:schema:user:v1"
xmlns:dataSource="urn:healthmedia:schema:data-source:v1"
xmlns:common="urn:healthmedia:schema:common:v1"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="urn:healthmedia:schema:user:v1" version="1.0">
    <xsd:import namespace="urn:healthmedia:schema:common:v1"
schemaLocation="../common/common-v1.xsd"/>
    <xsd:import namespace="urn:healthmedia:schema:data-source:v1"
schemaLocation="./data-source-v1.xsd"/>
    ...
</xsd:schema>

Notice that the schemaLocation entries are not rewritten and so cannot be
retrieved by parsing the xsd.

Thanks,

Mike


On Tue, Jul 1, 2014 at 7:46 PM, Lambert, Michael <michael@michaellambert.com
> wrote:

> I have a wsdl that is being published using the following configuration:
>
> <jaxws:endpoint id="userService"
> wsdlLocation="classpath:/service/user-soap-v1.wsdl"
>  serviceName="userService:userSoapServicePorts"
> endpointName="userService:userSoapServicePort"
>  implementor="com.healthmedia.ws.wsdl.user.v1.UserServiceImpl"
> address="/userService" />
>
> After starting the service I can look at the concrete wsdl class and
> everything seems okay. The schemaLocations are all properly re-wrtten:
>
> <xsd:import namespace="urn:healthmedia:schema:user:v1" schemaLocation="
> http://localhost:8080/user-service/userService?xsd=../schema/entity/user-v1.xsd
> "/>
> <xsd:import namespace="urn:healthmedia:schema:common-error:v1"
> schemaLocation="
> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd
> "/>
>
> But if I then parse either of THESE imported xsd files there is a problem.
> The imports in these files are NOT rewritten; the effect is that clients
> cannot parse my service contract. Here is the import contents from '"
> http://localhost:8080/user-service/userService?xsd=../schema/common/common-error-v1.xsd'
>  (note the absence of the '
> http://localhost:8080/user-service/userService?xsd=' prefix):
>
> <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
> schemaLocation="../external/xml.xsd"/>
>
> This seemed to have worked before. What could i have done to cause this to
> happen? SOAPUI no longer can import my contracts.
>
> The code is in github:
>
> https://github.com/MacFlecknoe/service-repository-sample/tree/master/user/service
>
> Thanks again!
>
>
>
>