You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by "Bc. Jiří Mikulášek" <ji...@aura.cz> on 2007/09/25 21:44:56 UTC

Missing prefix in request on IBM

Hello,
 yet another question regarding WS-client development on IBM.
This issue appears only on IBM java on AIX os. Using IBM java on another 
operating system everything works fine.

There is missing prefix by operation element in SOAP request. We are using 
document/literal wrapped binding

Our request on IBM looks like (without an envelope):

<soap:Body>
    <Vendor xmlns:ns2="some:namespace">
	....
    </Vendor>
</soap:Body>

but should look like (and looks like on windows or linux):

<soap:Body>
    <ns2:Vendor xmlns:ns2="some:namespace">
	....
    </ns2:Vendor>
</soap:Body>

The missing prefix is problem for the service part (not developed by us and 
running on webmethods) and the operation couldn't be called - we 
got "Service :Vendor does not exist".

Please can somebody give me a hint which part of cxf or another library is 
responsible for serializing the SOAP request and what jdk dependent API is 
used? I must try to findout the primary cause otherwis this problem cannot be 
fixed. Our tests have just proven that the xerces implementation has no 
influence.

Thank you

Jiri Mikulasek

Re: Missing prefix in request on IBM

Posted by "Bc. Jiří Mikulášek" <ji...@aura.cz>.
Hi all,
finally I found the primary cause and fortunately it has nothing with 
saaj-impl or cxf at all.

The problem is that all the wars deployed on AIX were obfuscated and know we 
have found that when we deploy nonobfuscated wwar, everything is ok.

Still the problem is little bit mysterious, because the obfuscator excludes 
all thridparty libraries and so. The only one thing which is obfuscated from 
whole CXF client is the generated stub. Now we are trying to configure 
obfuscator to exclude these classes from process.

Again thanks a lot for your time and investigation.

On Wednesday 26 of September 2007 09:31:52 Bc. Jiří Mikulášek wrote:
> Hi thanks a lot for information. I am not very experienced regarding
> binding styles but I presume that we are using doc/lit/wrapped. We are
> suing stubs and here is how the stub looks like:
>
> @WebService(targetNamespace = "http://sapdev06.webmeth65.osl.no/", name
> = "NoMilSapMaterial_WebServicePortType")
>
> public interface NoMilSapMaterialWebServicePortType {
>
>     @WebResult(targetNamespace = "", name = "Material")
>     @RequestWrapper(localName = "Material", targetNamespace
> = "sapdev06material.com", className = "com.sapdev06material.Material")
>     @ResponseWrapper(localName = "Response", targetNamespace
> = "sapdev06material.com", className = "com.sapdev06material.Response")
>     @WebMethod(operationName = "Material")
>     public
> java.util.List<localhost.nomilsapmaterial.webservice.senditem.ResponseMater
>ial> material(
>         @WebParam(targetNamespace = "", name = "Item")
>         java.util.List<com.sapdev06material.Material.Item> item
>     );
> }
>
> What's strange to me, that if I debug a get to the BareOutInterceptor,
> which calls JAXBEncoderDecoder. This thing seems to be not consisten with
> your described cases. Am I wrong (may be it is the first case)?
>
> I encounter now also one more strange thing: When we ommit saaj-impl from
> the classpath on AIX and there is no SOAPFault (because that's the case
> saaj-impl is needed), there is prefix generated (we see <ns2:Vendor
> xmlns:ns2=....>) If we put this saaj-impl back on classpath, it is
> generated again without prefix. Again be aware that this magic happens only
> on AIX with IBM java :-)
>
>
> Best Regards
>
> On Wednesday 26 of September 2007 00:21:06 Daniel Kulp wrote:
> > Well, this area of the serialization should have no JDK differences.
> > Not sure what would cause it.
> >
> > That said, some hints:
> >
> > Is it our normal JAX-WS + JAXB?
> > Is is wrapped doc/lit and using "wrapper" objects?
> >     If the answer to both is yes, then it really is completely in the
> > JAXB runtime to do the serialization.   The breakpoint you would want
> > would be in the JAXBEncoderDecoder marshal method.
> >
> > If it's RPC/lit, it would be in
> > RPCOutInterceptor
> >
> > If it's Doc/Lit/Wrapped without the JAX-WS wrapper types, it would be the
> > WrappedOutInterceptor (see note about this below)
> >
> > If it's Doc/Lit/Bare, the BareOutInterceptor, but again probably
> > delegates to JAXB/Aegis via the "writeParts" method of the
> > AbstractOutDatabindingInterceptor superclass.
> >
> >
> > One thing I must add though:
> > Check the CXF version.   Version 2.0 DID output with the
> > <Vendor xmlns:ns2="some:namespace">
> > form.   That was changed for 2.0.1 where the WrappedOutInterceptor was
> > updated to always namespace prefix the wrapper element.   2.0.2 is being
> > released today (already at the download location, waiting for sites to
> > sync before sending the announcment).
> >
> > Dan
> >
> > On Tuesday 25 September 2007, Bc. Jiří Mikulášek wrote:
> > > I understand, that's why I am looking for just a hint about the
> > > architecture - can somebody tell me which CXF class or which another
> > > library is responsible for serializing the SOAP request. If I find a
> > > proper point, I can download sources, debug and experiment with it.
> > > There must be some difference in IBM java for AIX and other system
> > > which definetely cause my problem. If I will know who is responsible
> > > for serializing soap request in cxf it will be easy to find which API
> > > from jdk is called and findout the difference then maybe proivde some
> > > patch...
> > >
> > > Dne úterý 25 září 2007 23:44 Benson Margulies napsal(a):
> > > > This is going to be mighty difficult to make any sense of. I, for
> > > > one, have no access to an environment to repro this in.
> > > >
> > > > > -----Original Message-----
> > > > > From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> > > > > Sent: Tuesday, September 25, 2007 3:45 PM
> > > > > To: cxf-user@incubator.apache.org
> > > > > Subject: Missing prefix in request on IBM
> > > > >
> > > > > Hello,
> > > > >  yet another question regarding WS-client development on IBM.
> > > > > This issue appears only on IBM java on AIX os. Using IBM java on
> > > > > another operating system everything works fine.
> > > > >
> > > > > There is missing prefix by operation element in SOAP request. We
> > > > > are using document/literal wrapped binding
> > > > >
> > > > > Our request on IBM looks like (without an envelope):
> > > > >
> > > > > <soap:Body>
> > > > >     <Vendor xmlns:ns2="some:namespace">
> > > > > 	....
> > > > >     </Vendor>
> > > > > </soap:Body>
> > > > >
> > > > > but should look like (and looks like on windows or linux):
> > > > >
> > > > > <soap:Body>
> > > > >     <ns2:Vendor xmlns:ns2="some:namespace">
> > > > > 	....
> > > > >     </ns2:Vendor>
> > > > > </soap:Body>
> > > > >
> > > > > The missing prefix is problem for the service part (not developed
> > > > > by us and
> > > > > running on webmethods) and the operation couldn't be called - we
> > > > > got "Service :Vendor does not exist".
> > > > >
> > > > > Please can somebody give me a hint which part of cxf or another
> > > > > library is responsible for serializing the SOAP request and what
> > > > > jdk dependent API is used? I must try to findout the primary cause
> > > > > otherwis this problem cannot be
> > > > > fixed. Our tests have just proven that the xerces implementation
> > > > > has no influence.
> > > > >
> > > > > Thank you
> > > > >
> > > > > Jiri Mikulasek



-- 
Jiri Mikulasek
---------------------------------
Developer

AURA, s.r.o.
Uvoz 499/56; 602 00 Brno
ISO 9001 certified company
AQAP 2110 (ČOS 051622)
tel./fax: +420 544 508 115
e-mail:  mikulasek@aura.cz
http://www.aura.cz
---------------------------------

Re: Missing prefix in request on IBM

Posted by "Bc. Jiří Mikulášek" <ji...@aura.cz>.
Hi thanks a lot for information. I am not very experienced regarding binding 
styles but I presume that we are using doc/lit/wrapped. We are suing stubs 
and here is how the stub looks like:

@WebService(targetNamespace = "http://sapdev06.webmeth65.osl.no/", name 
= "NoMilSapMaterial_WebServicePortType")

public interface NoMilSapMaterialWebServicePortType {

    @WebResult(targetNamespace = "", name = "Material")
    @RequestWrapper(localName = "Material", targetNamespace 
= "sapdev06material.com", className = "com.sapdev06material.Material")
    @ResponseWrapper(localName = "Response", targetNamespace 
= "sapdev06material.com", className = "com.sapdev06material.Response")
    @WebMethod(operationName = "Material")
    public 
java.util.List<localhost.nomilsapmaterial.webservice.senditem.ResponseMaterial> 
material(
        @WebParam(targetNamespace = "", name = "Item")
        java.util.List<com.sapdev06material.Material.Item> item
    );
}

What's strange to me, that if I debug a get to the BareOutInterceptor, which 
calls JAXBEncoderDecoder. This thing seems to be not consisten with your 
described cases. Am I wrong (may be it is the first case)?

I encounter now also one more strange thing: When we ommit saaj-impl from the 
classpath on AIX and there is no SOAPFault (because that's the case saaj-impl 
is needed), there is prefix generated (we see <ns2:Vendor xmlns:ns2=....>) If 
we put this saaj-impl back on classpath, it is generated again without 
prefix. Again be aware that this magic happens only on AIX with IBM java :-)


Best Regards
On Wednesday 26 of September 2007 00:21:06 Daniel Kulp wrote:
> Well, this area of the serialization should have no JDK differences.
> Not sure what would cause it.
>
> That said, some hints:
>
> Is it our normal JAX-WS + JAXB?
> Is is wrapped doc/lit and using "wrapper" objects?
>     If the answer to both is yes, then it really is completely in the
> JAXB runtime to do the serialization.   The breakpoint you would want
> would be in the JAXBEncoderDecoder marshal method.
>
> If it's RPC/lit, it would be in
> RPCOutInterceptor
>
> If it's Doc/Lit/Wrapped without the JAX-WS wrapper types, it would be the
> WrappedOutInterceptor (see note about this below)
>
> If it's Doc/Lit/Bare, the BareOutInterceptor, but again probably
> delegates to JAXB/Aegis via the "writeParts" method of the
> AbstractOutDatabindingInterceptor superclass.
>
>
> One thing I must add though:
> Check the CXF version.   Version 2.0 DID output with the
> <Vendor xmlns:ns2="some:namespace">
> form.   That was changed for 2.0.1 where the WrappedOutInterceptor was
> updated to always namespace prefix the wrapper element.   2.0.2 is being
> released today (already at the download location, waiting for sites to
> sync before sending the announcment).
>
> Dan
>
> On Tuesday 25 September 2007, Bc. Jiří Mikulášek wrote:
> > I understand, that's why I am looking for just a hint about the
> > architecture - can somebody tell me which CXF class or which another
> > library is responsible for serializing the SOAP request. If I find a
> > proper point, I can download sources, debug and experiment with it.
> > There must be some difference in IBM java for AIX and other system
> > which definetely cause my problem. If I will know who is responsible
> > for serializing soap request in cxf it will be easy to find which API
> > from jdk is called and findout the difference then maybe proivde some
> > patch...
> >
> > Dne úterý 25 září 2007 23:44 Benson Margulies napsal(a):
> > > This is going to be mighty difficult to make any sense of. I, for
> > > one, have no access to an environment to repro this in.
> > >
> > > > -----Original Message-----
> > > > From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> > > > Sent: Tuesday, September 25, 2007 3:45 PM
> > > > To: cxf-user@incubator.apache.org
> > > > Subject: Missing prefix in request on IBM
> > > >
> > > > Hello,
> > > >  yet another question regarding WS-client development on IBM.
> > > > This issue appears only on IBM java on AIX os. Using IBM java on
> > > > another operating system everything works fine.
> > > >
> > > > There is missing prefix by operation element in SOAP request. We
> > > > are using document/literal wrapped binding
> > > >
> > > > Our request on IBM looks like (without an envelope):
> > > >
> > > > <soap:Body>
> > > >     <Vendor xmlns:ns2="some:namespace">
> > > > 	....
> > > >     </Vendor>
> > > > </soap:Body>
> > > >
> > > > but should look like (and looks like on windows or linux):
> > > >
> > > > <soap:Body>
> > > >     <ns2:Vendor xmlns:ns2="some:namespace">
> > > > 	....
> > > >     </ns2:Vendor>
> > > > </soap:Body>
> > > >
> > > > The missing prefix is problem for the service part (not developed
> > > > by us and
> > > > running on webmethods) and the operation couldn't be called - we
> > > > got "Service :Vendor does not exist".
> > > >
> > > > Please can somebody give me a hint which part of cxf or another
> > > > library is responsible for serializing the SOAP request and what
> > > > jdk dependent API is used? I must try to findout the primary cause
> > > > otherwis this problem cannot be
> > > > fixed. Our tests have just proven that the xerces implementation
> > > > has no influence.
> > > >
> > > > Thank you
> > > >
> > > > Jiri Mikulasek



-- 
Jiri Mikulasek
---------------------------------
Developer

AURA, s.r.o.
Uvoz 499/56; 602 00 Brno
ISO 9001 certified company
AQAP 2110 (ČOS 051622)
tel./fax: +420 544 508 115
e-mail:  mikulasek@aura.cz
http://www.aura.cz
---------------------------------

RE: Missing prefix in request on IBM

Posted by Benson Margulies <bi...@basistech.com>.
That depends on the data binding. Are you using JAXB or Aegis?

> -----Original Message-----
> From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> Sent: Tuesday, September 25, 2007 6:04 PM
> To: cxf-user@incubator.apache.org
> Subject: Re: Missing prefix in request on IBM
> 
> I understand, that's why I am looking for just a hint about the
> architecture -
> can somebody tell me which CXF class or which another library is
> responsible
> for serializing the SOAP request. If I find a proper point, I can download
> sources, debug and experiment with it. There must be some difference in
> IBM
> java for AIX and other system which definetely cause my problem. If I will
> know who is responsible for serializing soap request in cxf it will be
> easy
> to find which API from jdk is called and findout the difference then maybe
> proivde some patch...
> 
> Dne úterý 25 září 2007 23:44 Benson Margulies napsal(a):
> > This is going to be mighty difficult to make any sense of. I, for one,
> have
> > no access to an environment to repro this in.
> >
> > > -----Original Message-----
> > > From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> > > Sent: Tuesday, September 25, 2007 3:45 PM
> > > To: cxf-user@incubator.apache.org
> > > Subject: Missing prefix in request on IBM
> > >
> > > Hello,
> > >  yet another question regarding WS-client development on IBM.
> > > This issue appears only on IBM java on AIX os. Using IBM java on
> another
> > > operating system everything works fine.
> > >
> > > There is missing prefix by operation element in SOAP request. We are
> > > using document/literal wrapped binding
> > >
> > > Our request on IBM looks like (without an envelope):
> > >
> > > <soap:Body>
> > >     <Vendor xmlns:ns2="some:namespace">
> > > 	....
> > >     </Vendor>
> > > </soap:Body>
> > >
> > > but should look like (and looks like on windows or linux):
> > >
> > > <soap:Body>
> > >     <ns2:Vendor xmlns:ns2="some:namespace">
> > > 	....
> > >     </ns2:Vendor>
> > > </soap:Body>
> > >
> > > The missing prefix is problem for the service part (not developed by
> us
> > > and
> > > running on webmethods) and the operation couldn't be called - we
> > > got "Service :Vendor does not exist".
> > >
> > > Please can somebody give me a hint which part of cxf or another
> library
> > > is responsible for serializing the SOAP request and what jdk dependent
> > > API is used? I must try to findout the primary cause otherwis this
> > > problem cannot be
> > > fixed. Our tests have just proven that the xerces implementation has
> no
> > > influence.
> > >
> > > Thank you
> > >
> > > Jiri Mikulasek

Re: Missing prefix in request on IBM

Posted by Daniel Kulp <dk...@apache.org>.
Well, this area of the serialization should have no JDK differences.   
Not sure what would cause it.  

That said, some hints:

Is it our normal JAX-WS + JAXB?
Is is wrapped doc/lit and using "wrapper" objects?
    If the answer to both is yes, then it really is completely in the 
JAXB runtime to do the serialization.   The breakpoint you would want 
would be in the JAXBEncoderDecoder marshal method.

If it's RPC/lit, it would be in 
RPCOutInterceptor

If it's Doc/Lit/Wrapped without the JAX-WS wrapper types, it would be the 
WrappedOutInterceptor (see note about this below)

If it's Doc/Lit/Bare, the BareOutInterceptor, but again probably 
delegates to JAXB/Aegis via the "writeParts" method of the 
AbstractOutDatabindingInterceptor superclass.


One thing I must add though:
Check the CXF version.   Version 2.0 DID output with the 
<Vendor xmlns:ns2="some:namespace">
form.   That was changed for 2.0.1 where the WrappedOutInterceptor was 
updated to always namespace prefix the wrapper element.   2.0.2 is being 
released today (already at the download location, waiting for sites to 
sync before sending the announcment).

Dan




On Tuesday 25 September 2007, Bc. Jiří Mikulášek wrote:
> I understand, that's why I am looking for just a hint about the
> architecture - can somebody tell me which CXF class or which another
> library is responsible for serializing the SOAP request. If I find a
> proper point, I can download sources, debug and experiment with it.
> There must be some difference in IBM java for AIX and other system
> which definetely cause my problem. If I will know who is responsible
> for serializing soap request in cxf it will be easy to find which API
> from jdk is called and findout the difference then maybe proivde some
> patch...
>
> Dne úterý 25 září 2007 23:44 Benson Margulies napsal(a):
> > This is going to be mighty difficult to make any sense of. I, for
> > one, have no access to an environment to repro this in.
> >
> > > -----Original Message-----
> > > From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> > > Sent: Tuesday, September 25, 2007 3:45 PM
> > > To: cxf-user@incubator.apache.org
> > > Subject: Missing prefix in request on IBM
> > >
> > > Hello,
> > >  yet another question regarding WS-client development on IBM.
> > > This issue appears only on IBM java on AIX os. Using IBM java on
> > > another operating system everything works fine.
> > >
> > > There is missing prefix by operation element in SOAP request. We
> > > are using document/literal wrapped binding
> > >
> > > Our request on IBM looks like (without an envelope):
> > >
> > > <soap:Body>
> > >     <Vendor xmlns:ns2="some:namespace">
> > > 	....
> > >     </Vendor>
> > > </soap:Body>
> > >
> > > but should look like (and looks like on windows or linux):
> > >
> > > <soap:Body>
> > >     <ns2:Vendor xmlns:ns2="some:namespace">
> > > 	....
> > >     </ns2:Vendor>
> > > </soap:Body>
> > >
> > > The missing prefix is problem for the service part (not developed
> > > by us and
> > > running on webmethods) and the operation couldn't be called - we
> > > got "Service :Vendor does not exist".
> > >
> > > Please can somebody give me a hint which part of cxf or another
> > > library is responsible for serializing the SOAP request and what
> > > jdk dependent API is used? I must try to findout the primary cause
> > > otherwis this problem cannot be
> > > fixed. Our tests have just proven that the xerces implementation
> > > has no influence.
> > >
> > > Thank you
> > >
> > > Jiri Mikulasek



-- 
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194
daniel.kulp@iona.com
http://www.dankulp.com/blog

Re: Missing prefix in request on IBM

Posted by "Bc. Jiří Mikulášek" <ji...@aura.cz>.
I understand, that's why I am looking for just a hint about the architecture - 
can somebody tell me which CXF class or which another library is responsible 
for serializing the SOAP request. If I find a proper point, I can download 
sources, debug and experiment with it. There must be some difference in IBM 
java for AIX and other system which definetely cause my problem. If I will 
know who is responsible for serializing soap request in cxf it will be easy 
to find which API from jdk is called and findout the difference then maybe 
proivde some patch...

Dne úterý 25 září 2007 23:44 Benson Margulies napsal(a):
> This is going to be mighty difficult to make any sense of. I, for one, have
> no access to an environment to repro this in.
>
> > -----Original Message-----
> > From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> > Sent: Tuesday, September 25, 2007 3:45 PM
> > To: cxf-user@incubator.apache.org
> > Subject: Missing prefix in request on IBM
> >
> > Hello,
> >  yet another question regarding WS-client development on IBM.
> > This issue appears only on IBM java on AIX os. Using IBM java on another
> > operating system everything works fine.
> >
> > There is missing prefix by operation element in SOAP request. We are
> > using document/literal wrapped binding
> >
> > Our request on IBM looks like (without an envelope):
> >
> > <soap:Body>
> >     <Vendor xmlns:ns2="some:namespace">
> > 	....
> >     </Vendor>
> > </soap:Body>
> >
> > but should look like (and looks like on windows or linux):
> >
> > <soap:Body>
> >     <ns2:Vendor xmlns:ns2="some:namespace">
> > 	....
> >     </ns2:Vendor>
> > </soap:Body>
> >
> > The missing prefix is problem for the service part (not developed by us
> > and
> > running on webmethods) and the operation couldn't be called - we
> > got "Service :Vendor does not exist".
> >
> > Please can somebody give me a hint which part of cxf or another library
> > is responsible for serializing the SOAP request and what jdk dependent
> > API is used? I must try to findout the primary cause otherwis this
> > problem cannot be
> > fixed. Our tests have just proven that the xerces implementation has no
> > influence.
> >
> > Thank you
> >
> > Jiri Mikulasek

RE: Missing prefix in request on IBM

Posted by Benson Margulies <bi...@basistech.com>.
This is going to be mighty difficult to make any sense of. I, for one, have no access to an environment to repro this in.

> -----Original Message-----
> From: Bc. Jiří Mikulášek [mailto:jiri.mikulasek@aura.cz]
> Sent: Tuesday, September 25, 2007 3:45 PM
> To: cxf-user@incubator.apache.org
> Subject: Missing prefix in request on IBM
> 
> Hello,
>  yet another question regarding WS-client development on IBM.
> This issue appears only on IBM java on AIX os. Using IBM java on another
> operating system everything works fine.
> 
> There is missing prefix by operation element in SOAP request. We are using
> document/literal wrapped binding
> 
> Our request on IBM looks like (without an envelope):
> 
> <soap:Body>
>     <Vendor xmlns:ns2="some:namespace">
> 	....
>     </Vendor>
> </soap:Body>
> 
> but should look like (and looks like on windows or linux):
> 
> <soap:Body>
>     <ns2:Vendor xmlns:ns2="some:namespace">
> 	....
>     </ns2:Vendor>
> </soap:Body>
> 
> The missing prefix is problem for the service part (not developed by us
> and
> running on webmethods) and the operation couldn't be called - we
> got "Service :Vendor does not exist".
> 
> Please can somebody give me a hint which part of cxf or another library is
> responsible for serializing the SOAP request and what jdk dependent API is
> used? I must try to findout the primary cause otherwis this problem cannot
> be
> fixed. Our tests have just proven that the xerces implementation has no
> influence.
> 
> Thank you
> 
> Jiri Mikulasek