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