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







Reply via email to