On Wednesday 14 July 2010 1:02:37 pm Vanore, Gregory wrote:
> Maybe I'm missing something, but I don't see how to get the
> JAXBDataBinding in there.  I'm not creating a jaxws:client or
> jaxws:endpoint declaration in my configuration, so I can't pass the bean
> into anything.  I've been looking at the beans through the debugger, and
> at some level there is a bean that holds a ServiceImpl where I could set
> the JAXBDataBinding, but I don't see a publically accessible way to
> retrieve the field without starting at the CXF API level.  Can I set
> some magic property in the request context?

Doesn't look like a way, no.   I think the only way to do this is either via 
config or by dropping into CXF api's.

That said, you can use a combination of the @DataBinding interface with 
configuration to ONLY configure a JAXBDataBinding object and not all the 
jaxws:client/jaxws:endpoint things and such.   In the config, create/define 
the object and then in the annotation, use the ref=".." attribute to refer to 
it by id.

Dan


> 
> -----Original Message-----
> From: Daniel Kulp [mailto:[email protected]]
> Sent: Saturday, July 03, 2010 1:45 PM
> To: [email protected]
> Cc: Vanore, Gregory
> Subject: Re: Customize JAXB namespace prefixes for JAXWS API created
> endpoints
> 
> 
> Any chance you could create a simple testcase that shows this.   It
> should
> definitely be allowed to define (or redefine) the namespace there.  The
> output
> may not be perfectly what you want, but it should work.
> 
> Dan
> 
> On Thursday 01 July 2010 10:50:50 am Vanore, Gregory wrote:
> > I see in the documentation how to use a JAXBDataBinding to customize
> > namespace prefixes for endpoints that I enumerate through the Spring
> > configuration mechanism.  I have a client that is strictly using the
> > JAX-WS API to create services:  Service.create(...) and then
> > service.getPort(...).
> > 
> > When I create a W3CEndpointReference, extra namespaces are injected
> 
> into
> 
> > it:
> > 
> > <EndpointReference xmlns="http://www.w3.org/2005/08/addressing";>
> > 
> >     <Address>http://localhost:8888/test</Address>
> >     <ReferenceParameters>
> >     
> >             <elem xmlns=""
> > 
> > xmlns:ns2="http://www.w3.org/2005/08/addressing";
> > xmlns:wsa="http://www.w3.org/2005/08/addressing";>test</elem>
> > 
> >     </ReferenceParameters>
> >     <Metadata/>
> > 
> > </EndpointReference>
> > 
> > The problem comes when I set this into my request message.  JAXB tries
> > to utilize ns2, and then declares a collision when it encounters the
> > 
> > endpoint reference, such as:
> >     W3CEndpointReference epr =
> 
> eprBuilder.address("http://localhost:8888/test";).referenceParameter(e).b
> 
> > uild();
> > 
> >     SubscribeService request = new SubscribeService();
> >     request.setTopic("theTopic");
> >     request.setConsumerReference(epr);
> >     ServiceResponse response = service().subscribeTo(request); //no
> > 
> > luck
> > 
> > javax.xml.ws.soap.SOAPFaultException: The namespace
> > xmlns:ns2="http://service.com/service"; could not be added as a
> 
> namespace
> 
> > to "elem": The namespace prefix "ns2"
> > 
> > I feel the best strategy is to use the namespace mapping to fix
> 
> certain
> 
> > common URLs to specific prefixes.  If you have other ideas I'll
> > certainly listen...
> > 
> > Thanks,
> > Greg

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to