ok, that's because the implemented DynamicProvider for Axis in the WSIF
is a wrapper around the Axi's Call class and you have to register for
each complex type or rather element in the schema found in the wsdl file
a serializer/deserializer class (this classes are usually gernerated by
the wsdl2java tool). these values for the fields in the generated
classes by wsdl2java will be used to write the xml code. I am not sure
but in these generated classes there are also ParameterDesc objects
found, which stores the description of the fields. I think you can set a
ParameterDesc object of a field explicitly to doc/literal. but i am not
sure. but if you want to use complex types, you have to register the
generated classes to be found by the WSIF, but I think you have already
done this!
At the moment to my best knowledge it is better to use axis2 for
doc/literal web services. you can create the xml elements of the soap
body very easyly with AXIOM and add it to a SoapEnvelope of a message
which will be sent to the Web Service. I used WSIF but now i use AXIS2
to generate dynamic invocations.
lg,
chris
Jeff MAURY schrieb:
Christian Kloner wrote:
hmm. this is strange because in my case (doc/literal), it always
works because after the wsdl file has been parsed, the encoding is
automatically detected. but i only use WSIF for Web Services with
datataypes which are built into the java language like String,
Integer, etc.
If you don't use complex or array types, then this causes no error.
But array or complex types will lead to errors.
Jeff
Jeff MAURY schrieb:
Christian Kloner wrote:
ups, it must be like that (I posted my own implementation class of
the Provider Interface, sry):
//We use Axis, set the Axis provider to make sure not to use the
soap provider
WSIFPluggableProviders.overrideDefaultProvider(
"http://schemas.xmlsoap.org/wsdl/soap/",
new
org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis());
Christian,
thanks for you help but your mail answers to the following question:
how
can I use the Axis provider instead of the Apache SOAP one for SOAP
calls. Where my question was, once I use the Axis provider, it always
uses the RPC SOAP encoding and provide no space for literal encoding.
Jeff
Christian Kloner schrieb:
You have to specify the Provider for the
http://schemas.xmlsoap.org/wsdl/soap/ namespace explicitly e.g.:
//We use Axis only, set our modified Axis provider
WSIFPluggableProviders.overrideDefaultProvider(
"http://schemas.xmlsoap.org/wsdl/soap/",
new WSIFDynamicProvider_ICAxis());
lg,
chris
Jeff MAURY (JIRA) schrieb:
Axis provider always uses SOAP encoding style
---------------------------------------------
Key: WSIF-85
URL: http://issues.apache.org/jira/browse/WSIF-85
Project: Axis-WSIF
Type: Bug
Components: Basic Architecture Versions: current
(nightly), 2.0 Environment: Windows XP SP2 + Sun JDK 1.4.2
Reporter: Jeff MAURY
Fix For: current (nightly)
When accessing a literal RPC based we service, WSIF, when using
the Axis provider, always use the SOAP encoding style. This lead
to error when running against Axis for example