> -----Original Message----- > From: Daniel Kulp [mailto:[email protected]] > Sent: Monday, November 08, 2010 12:32 PM > To: [email protected] > Cc: KARR, DAVID (ATTSI) > Subject: Re: Envelope has xmlns attributes for EVERY schema defined in > WSDL, even if not referenced > > > This is how JAXB outputs things by default. It pretty much always > outputs > all the namespaces that it knows about at the "root" of the document > that it > is writing. > > You can control it somewhat by createing a > com.sun.xml.bind.marshaller.NamespacePrefixMapper and registering that > with > the JAXBDataBinding in CXF. It would probably return an empty list > from > getPreDeclaredNamespaceUris and getPreDeclaredNamespaceUris2.
Could you be more specific? I assume you mean to define a class that extends NamespacePrefixMapper. The default implementation already returns an empty string from "getPreDeclaredNamespaceUris()", "getPreDeclaredNamespaceUris2()", and "getContextualNamespaceDecls()". What would I put in the "getPreferredPrefix()" method? How do I "register" this instance in CXF? What exactly will be the result of adding this? > On Friday 05 November 2010 4:41:47 pm KARR, DAVID (ATTSI) wrote: > > I have an existing service client that uses JAXB, with an ad hoc Soap > > infrastructure. When I marshal the envelope in the existing code, I > get > > xmlns attributes for all the namespaces that are actually used in the > > envelope, which isn't many. It only produces one application- > specific > > one. > > > > Our WSDL defines a service with a large number of operations. Each > one > > of them has their own operation-specific schema. > > > > When I now marshal the request with CXF, I get a request that is > much, > > much, larger than the original code. This is because it has xmlns > > attributes for EVERY schema referenced in the WSDL, even though only > one > > is referenced in the operation. What's worse is that that huge list > of > > xmlns attributes is present in two places in the envelope, both on > the > > body child element and in an element in the header. > > > > Is there some way I can get the envelope back closer to what I had > > before? > > -- > Daniel Kulp > [email protected] > http://dankulp.com/blog
