Web Services Invocation Framework FAQ

based on questions posted on discussion forum at http://www.alphaworks.ibm.com/tech/wsif

What is official version of WSIF? How to get the latest version?

The official version of WSIF can now be found on the Apache web site since WSIF was donated to Apache a few months ago. Version available from Alphaworks is no longer maintained and will be soon retired.

The Apache WSIF homepage can be found at: http://xml.apache.org/axis/wsif

Nightly builds are available at http://cvs.apache.org/dist/axis/nightly/ The  wsif-src*.zip contains source distribution, the wsif-bin* zip file contains a built wsif.jar along with the API Javadoc and the wsif-all*.zip contains the source, the JAR and the javadocs. (* will be replaced by the current version number in the file names).

What are differences between WSIF and WSTK?

WSIF is a framework for invoking WSDL-described services. WSTK is IBM's Web Services Toolkit, a preview technology for web services support in Websphere available from alphaworks. WSTK includes WSIF amongst other things.

What are differences between WSIF and Axis?

Axis is an implementation of SOAP. It includes on the server-side infrastructure for deploying web service implementations and then routing SOAP messages between clients and those implementations. It also implements the JAX-RPC specification for invoking SOAP services.

WSIF is similar to the client piece of Axis, in that it is used for invoking services. However, WSIF's API is WSDL-driven and protocol independent; it allows protocol-specific code ("providers") to be plugged in. For invoking SOAP services, WSIF is in fact packaged with an Axis provider, that uses Axis APIs (i.e. JAX-RPC) to do the invocation. So WSIF operates at a more abstract level than Axis.

What are differences between WSIF and JAX-RPC?

JAX-RPC is an API for invoking XML-based RPC services - essentially its current scope is limited to invocation of SOAP services. WSIF is an API for invoking WSDL-described services, whether they happen to be SOAP services or not (for example, WSIF defines WSDL bindings so that EJBs, enterprise software acessible using JMS or the Java Connector architecture as wel as local java classes can all be described as first class WSDL services and then invoked using the same, protocol-independent WSIF API).

How to use and set HTTP proxy with WSIF and SOAP over HTTP

TODO: describe here current support for system properties etc.

Where are extensions to WSDL that are supported by WSIF documented?

WSIF defines and supports the following WSDL bindings (besides the standard SOAP binding which is supported):

This means that using the WSIF API you can invoke a service, independent of whether it is made available over SOAP, as an EJB, over JMS, using java connectors or as a local java class.

How do I define my own WSDL binding extensions and write WSIF providers for them

Here's how to write your own WSDL extensions to support new protocols, and then write your own WSIF providers to support customized WSIF extensions.

How do I report problems and request new features?

Please subscribe and post your questions to AXIS mailing list (make sure to add [wsif] prefix to mail subject).

How do I select SOAP provider used in WSIF?

WSIF comes with an Apache Axis provider so using axis with WSIF is easy. WSIF has two SOAP providers, one using Apache SOAP 2.3 and the other using Axis, by default WSIF will use the Axis provider. The default is controlled by the org.apache.wsif.util.WSIFPluggableProviders class. The javadoc for this class gives details of how the default is defined, but it can be overridden programmatically, for example, the following call sets the axis provider to be the default:
WSIFPluggableProviders.overrideDefaultProvider("http://schemas.xmlsoap.org/wsdl/soap/",
new WSIFDynamicProvider_ApacheSOAP() );

How to use dynamic invoker sample?

java clients.DynamicInvoker http://www.xmethods.net/sd/2001/TemperatureService.wsdl getTemp 10570

Reading WSDL document from 'http://www.xmethods.net/sd/2001/TemperatureService.wsdl'
Preparing WSIF dynamic invocation
- WSIF0006W: Multiple WSIFProvider found supporting the same namespace URI 'http://schemas.xmlsoap.org/wsdl/soap/'. Found ('org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP, org.apache.wsif.providers.soap.apacheaxis.WSIFDynamicProvider_ApacheAxis')
- WSIF0007I: Using WSIFProvider 'org.apache.wsif.providers.soap.apachesoap.WSIFDynamicProvider_ApacheSOAP' for namespaceURI 'http://schemas.xmlsoap.org/wsdl/soap/'
Executing operation getTemp
Result:
return=56.0

Done!

Sample DynamicInvoker and Complex Type handling in WSIF?

WSIF does support complex types - of course XML schema support is limited (but very reasonable).

The DynamicInvoker doesn't support invocation of services using complex types since this requires that java representations of the complex types be generated first.

It is also possible to extend DynamicInvoker to support complex types but it will require some kind of intermediate representation of values that can handle any complex type (such as JROM...)