Thanks Anne for the explanation.
Another quick query: Is there a way to specify the elementFormDefault variable explicitly in wsdd? I tried having it as a parameter in globalConfiguration but it doesn't seem to work. This is what i used:
<parameter name="elementFormDefault " value="unqualified"/>
Regards,
Rajesh
Rajesh
On 9/1/06, Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
Actually, in the response, all your child elements are qualified.
That's the effect of using the default namespace declaration -- all
child elements are qualified by the default namespace unless
specifically overrided which another namespace declaration. In other
words, this:
<foobar xmlns="urn:foo:bar">
<foo>string</foo>
<bar>string</bar>
</foobar>
is semantically equivalent to this:
<ns:foobar xmlns:ns="urn:foo:bar">
<ns:foo>string</ns:foo>
<ns:bar>string</ns:bar>
</ns:foobar>
When using the default namepsace, if you want to make child elements
unqualified, then you must specifically override the default, like
this:
<foobar xmlns="urn:foo:bar">
<foo xmlns="">string</foo>
<barxmlns="">string</bar>
</foobar>
See http://atmanes.blogspot.com/2006/07/short-explanation-of-xml-namespaces.html
for more explanation of namespaces.
In any case, I recommend that you use the Axis "WRAPPED" style. It
produces document/literal, but you don't need to change your service.
Change the <service> definition to:
<service name="OBAWebService" provider="java:RPC"
style="wrapped" use="literal">
Also change the sendMultiRefs parameter value to "false".
Anne
On 9/1/06, Rajesh Narayan <[EMAIL PROTECTED]> wrote:
>
> Hi Anne,
>
> Thanks a lot for the response.
>
> The request that I had attached was a request i had generated through a test
> harness and hence it is rpc/encoded.
> The response however has the child elements unqualified.
>
> We initially had rpc/encoded but changed to rpc/literal because SAP/XI did
> not support arrays with sopenc format.
>
> One possible solution would be switching to document/literal but that would
> require considerable amount of changes at the web service end
>
> The reason I wanted the prefix was because the SAP/XI client can accept
> similar messages if it's with a prefix.
>
> You can have a look at my server-config.wsdd which is attached below
>
> Thanks Again
>
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="
> http://xml.apache.org/axis/wsdd/providers/java ">
> <globalConfiguration>
> <parameter name="sendMultiRefs" value="true"/>
> <parameter name="disablePrettyXML" value="true"/>
> <parameter name="adminPassword" value="admin"/>
> <parameter name="dotNetSoapEncFix" value="true"/>
> <parameter name="enableNamespacePrefixOptimization"
> value="true"/>
> <parameter name="sendXMLDeclaration" value="true"/>
> <parameter name="attachments.implementation"
> value="org.apache.axis.attachments.AttachmentsImpl "/>
> <parameter name="sendXsiTypes" value="false"/>
> <requestFlow>
> <handler
> type="java:org.apache.axis.handlers.JWSHandler">
> <parameter name="scope" value="session"/>
> </handler>
> <handler type="java:
> org.apache.axis.handlers.JWSHandler">
> <parameter name="scope" value="request"/>
> <parameter name="extension" value=".jwr"/>
> </handler>
> </requestFlow>
> </globalConfiguration>
> <handler name="Authenticate"
> type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
> <handler name="LocalResponder" type="java:
> org.apache.axis.transport.local.LocalResponder"/>
> <handler name="URLMapper"
> type="java:org.apache.axis.handlers.http.URLMapper"/>
> <service name="AdminService" provider="java:MSG">
> <parameter name="allowedMethods" value="AdminService"/>
> <parameter name="enableRemoteAdmin" value="false"/>
> <parameter name="className" value=" org.apache.axis.utils.Admin"/>
> <namespace> http://xml.apache.org/axis/wsdd/</namespace>
> </service>
> <service name="OBAWebService" provider="java:RPC" style="rpc"
> use="literal">
> <parameter name="allowedMethods"
> value="createUser,updateProfile,readUser,deleteUser"/>
> <parameter name="scope" value="Application"/>
> <parameter name="className" value="
> com.test.webservices.OBAWebService"/>
> <typeMapping
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle="" qname="ns1:OBAUser"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory
> " type="java:com.test.OBAUserBean" xmlns:ns1="urn:OBAWebService"/>
> <typeMapping xmlns:ns2="urn:OBAWebService" qname="ns2:ArrayOf_xsd_string"
> type="java:java.lang.String []"
> serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
> deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
> encodingStyle="" />
> </service>
> <service name="Version" provider="java:RPC">
> <parameter name="allowedMethods" value="getVersion"/>
> <parameter name="className" value="org.apache.axis.Version"/>
> </service>
> <transport name="http">
> <requestFlow>
> <handler type="URLMapper"/>
> <handler
> type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
> </requestFlow>
> <parameter name="qs:list" value="
> org.apache.axis.transport.http.QSListHandler "/>
> <parameter name="qs:wsdl"
> value="org.apache.axis.transport.http.QSWSDLHandler"/>
> <parameter name="qs:method" value="
> org.apache.axis.transport.http.QSMethodHandler "/>
> </transport>
> <transport name="local">
> <responseFlow>
> <handler type="LocalResponder"/>
> </responseFlow>
> </transport>
> </deployment>
>
>
>
>
>
> On 9/1/06, Anne Thomas Manes <[EMAIL PROTECTED]> wrote:
> >
> Note the following errors based on your assertion that this is an
> rpc/literal service:
>
> - The input message is using RPC/encoded, and I'm quite sure that
> SAP XI does not support RPC literal.
> - The child element of the return wrapper element (<readUserReturn>)
> is qualified, which is inconsistent with RPC/literal -- all children
> of
> the generated wrapper elements in RPC/literal must be unqualified.
>
> I seriously doubt that the problem is caused by use of the default
> namespace instead of a namespace assigned a prefix.
>
> <readUserResponse xmlns="urn:OBAWebService">
>
> is semantically identical to
>
> <ns1:readUserResponse xmlns:ns1="urn:OBAWebService">
>
> And I'm certain the XI can handle either case.
>
> My guess is that your problem is caused by the fact that neither XI
> nor Axis 1.3 supports RPC/literal. You should convert your service to
> either RPC/encoded or document/literal.
>
> Anne
>
> On 9/1/06, Rajesh Narayan <[EMAIL PROTECTED] > wrote:
> >
> >
> > Hi All,
> >
> > I am using Axis 1.3 rpc/literal style for my server and the client trying
> to
> > access our webservice is an SAP XI client.
> >
> > When I send the request:
> >
> > <?xml version='1.0' encoding='UTF-8'?>
> > <SOAP-ENV:Envelope
> > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/
> "
> > xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
> > xmlns:xsd=" http://www.w3.org/2001/XMLSchema ">
> > <SOAP-ENV:Body>
> > <ns1:readUser xmlns:ns1="urn:OBAWebService" SOAP-ENV:encodingStyle="
> > http://schemas.xmlsoap.org/soap/encoding/ ">
> > <OBAUserRequestBean xsi:type="ns1:OBAUser">
> > <errorMessages xmlns:ns2="
> > http://schemas.xmlsoap.org/soap/encoding/ "
> > xsi:type="ns2:Array" ns2:arrayType="xsd:string[]" xsi:null="true"/>
> > <title xsi:type="xsd:string"></title>
> > <industrySector
> > xsi:type="xsd:string">VerynewSector</industrySector>
> > <status xsi:type="xsd:string" xsi:null="true"/>
> > <roles xmlns:ns3="
> > http://schemas.xmlsoap.org/soap/encoding/ "
> > xsi:type="ns3:Array" ns3:arrayType="xsd:string[2]">
> > <item xsi:type="xsd:string">sap_admin</item>
> > <item xsi:type="xsd:string">sap_account2</item>
> > </roles>
> > <authCode xsi:type="xsd:string"></authCode>
> > <returnCode xsi:type="xsd:string" xsi:null="true"/>
> > <newEmail xsi:type="xsd:string" xsi:null="true"/>
> > <firstName xsi:type="xsd:string"></firstName>
> > <lastName xsi:type="xsd:string"></lastName>
> > <segment xsi:type="xsd:string">VerynewSegment</segment>
> > <email xsi:type="xsd:string"> [EMAIL PROTECTED]</email>
> > </OBAUserRequestBean>
> > </ns1:readUser>
> > </SOAP-ENV:Body>
> > </SOAP-ENV:Envelope>
> >
> > The response I get is:
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <soapenv:Envelope
> > xmlns:soapenv="
> http://schemas.xmlsoap.org/soap/envelope/"
> > xmlns:xsd=" http://www.w3.org/2001/XMLSchema "
> xmlns:xsi="
> > http://www.w3.org/2001/XMLSchema-instance">
> > <soapenv:Body>
> > <readUserResponse xmlns="urn:OBAWebService">
> > <readUserReturn>
> > <returnCode>0</returnCode>
> > <authCode xsi:nil="true"/>
> > <industrySector>sample_sector</industrySector>
> > <status>Success</status>
> > <roles xsi:nil="true"/>
> > <segment>sample_segment</segment>
> > <email>[EMAIL PROTECTED]</email>
> > <title>Mr.</title>
> > <firstName>abra</firstName>
> > <lastName>Dabra</lastName>
> > <errorMessages xsi:nil="true"/>
> > <newEmail xsi:nil="true"/>
> > </readUserReturn>
> > </readUserResponse>
> > </soapenv:Body>
> > </soapenv:Envelope>
> >
> > The respons edoes not have a namespace prefix associated with the
> > readUserResponse node, which is causing problems fro the XI client. Is
> there
> > any way we can change some configurations to get around this issue.
> >
> > Any help would be highly appreciated
> >
> > Regards,
> >
> >
> > Rajesh
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
