B
billdavidcn
I am not sure this thread should be post here. It's a problem about
using two different SOAP engine: axis and xfire to implement my web
service.
We used to implement my web service with axis, but to have a better
performance, we choose xfire at last and made necessary change to our
implementation. Everything goes well. But today, the test team reports
the soap message they sent with testing tool can't be rightly resolved
by xfire (it's all OK when we use axis.).
But with another web service client created with WebLogic workshop,
both implementation of web services can be accessed successfully. A
detail comparsion shows: when we use xfire, to a complex type which
belongs to some namespace, we must use a distinct namespace before the
complex type, for example:
<xoperation xmlns="http://xxx/v2_2/local">
<reference>
<endpoint>http://192.169.1.115:38080/</endpoint>
<interfaceName>123456789</interfaceName>
<correlator>906366161</correlator>
</reference>
....
is not acceptable by xfire, while the following package:
<abc:xoperation xmlns:abc="http://xxx/v2_2/local">
<abc:reference>
<endpoint>http://192.169.1.115:38080/</endpoint>
<interfaceName>123456789</interfaceName>
<correlator>906366161</correlator>
</abc:reference>
....
is acceptable.
But to me, I think the two formats are same. What's your opinion?
Although the 2nd format is obviously correct, since
endpoint/interfaceName/correlator does not belong to namespace abc, I
can't find any evidence why the 1st format is wrong and why axis can
parse it correctly.
BTW:
the following is xsd of SimpleReference:
<xsd:complexType name="SimpleReference">
<xsd:sequence>
<xsd:element name="endpoint" type="xsd:anyURI"/>
<xsd:element name="interfaceName" type="xsd:string"/>
<xsd:element name="correlator" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
using two different SOAP engine: axis and xfire to implement my web
service.
We used to implement my web service with axis, but to have a better
performance, we choose xfire at last and made necessary change to our
implementation. Everything goes well. But today, the test team reports
the soap message they sent with testing tool can't be rightly resolved
by xfire (it's all OK when we use axis.).
But with another web service client created with WebLogic workshop,
both implementation of web services can be accessed successfully. A
detail comparsion shows: when we use xfire, to a complex type which
belongs to some namespace, we must use a distinct namespace before the
complex type, for example:
<xoperation xmlns="http://xxx/v2_2/local">
<reference>
<endpoint>http://192.169.1.115:38080/</endpoint>
<interfaceName>123456789</interfaceName>
<correlator>906366161</correlator>
</reference>
....
is not acceptable by xfire, while the following package:
<abc:xoperation xmlns:abc="http://xxx/v2_2/local">
<abc:reference>
<endpoint>http://192.169.1.115:38080/</endpoint>
<interfaceName>123456789</interfaceName>
<correlator>906366161</correlator>
</abc:reference>
....
is acceptable.
But to me, I think the two formats are same. What's your opinion?
Although the 2nd format is obviously correct, since
endpoint/interfaceName/correlator does not belong to namespace abc, I
can't find any evidence why the 1st format is wrong and why axis can
parse it correctly.
BTW:
the following is xsd of SimpleReference:
<xsd:complexType name="SimpleReference">
<xsd:sequence>
<xsd:element name="endpoint" type="xsd:anyURI"/>
<xsd:element name="interfaceName" type="xsd:string"/>
<xsd:element name="correlator" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>