Web Services Invocation Framework

The Web Services Invocation Framework (WSIF) is a simple Java API for invoking Web services, no matter how or where the services are provided.

WSIF enables developers to interact with representations of Web services instead of working directly with the Simple Object Access Protocol (SOAP) APIs, which is the usual programming model. With WSIF, developers can work with the same programming model regardless of how the Web service is implemented and accessed. It frees the developer from the constraints of having to develop services for particular transport protocols or service environments. Thus, it has an API that provides binding-independent access to any Web service.

WSIF allows stubless or completely dynamic invocation of a Web service, based upon examination of the meta-data about the service at runtime. It also allows updated implementations of a binding to be plugged into WSIF at runtime, and it allows the calling service to defer choosing a binding until runtime.

Finally, WSIF is closely based upon WSDL, so it can invoke any service that can be described in WSDL.

Whats new with WSIF?

The first Apache WSIF realease candidate is currently being worked on and should be available in the near future. Check back here and watch the mailing lists for news

The WSIF documentation is slowly coming together with descriptions of the WSIF Java and EJB bindings now available.

WSIF has been changed so the Apache Axis provider is now used for the default SOAP binding. WSIF has two SOAP providers, one based on Apache SOAP, the other on Apache Axis.

WSIF Structure

In WSDL a binding defines how to map between the abstract PortType and a real service format and protocol. For example, the SOAP binding defines the encoding style, the SOAPAction header, the namespace of the body (the targetURI), and so forth.

WSDL allows there to be multiple implementations for a Web Service, and multiple Ports that share the same PortType. In other words, WSDL allows the same interface to have bindings to for example, SOAP and IIOP.

WSIF provides an API to allow the same client code to access any available binding. As the client code can then be written to the PortType it can be a deployment or configuration setting (or a code choice) which port and binding it uses.

WSIF uses 'providers' to support these multiple WSDL bindings. A provider is a piece of code that supports a WSDL extension and allows invocation of the service through that particular implementation. WSIF providers use the J2SE JAR service provider specification making them discoverable at runtime.

Clients can then utilize any new implementations and can delegate the choice of port to the infrastructure and runtime, which allows the implementation to be chosen on the basis of quality of service characteristics or business policy.


A J2SE v1.3 SDK (eg from Java J2SE site) and the Apache Jakarta Ant tool to build wsif. Ant is available at the Apache ANT website. To build WSIF the jars from the following packages are required:

JAXP compliant XML parser, such as Apache Xerces. xercesImpl.jar xmlParserAPIs.jar
WSDL for Java API (WSDL4J), from the IBM developerWorks site. wsdl4j.jar qname.jar
Apache SOAP, from the Apache SOAP site soap.jar
Apache Axis, from the Apache Axis site axis.jar saaj.jar jaxrpc.jar commons-logging.jar
J2EE 1.3 from the Java J2EE site j2ee.jar

Currently, in order to successfully build WSIF, all the above prerequisites are required no matter which providers are going to be used.

Accessing Builds and Source Code

The source code for this package is available on the Apache web site. Individual files can be accessed using the web-based CVS interface. The entire package can be downloaded using the following instructions.

Accessing the Nightly Builds

This package is built nightly along with Axis. The build will create two zip files: and The first file contains a complete build image, which includes wsif.jar and the API Javadoc. The second file contains a copy of the source code, which could be built using Ant. Both of these files can be accessed at the same location as the Axis nightly builds.

Accessing the Source Tree (AnonCVS)

So, you've decided that you need access to the source tree to see the latest and greatest code. There's two different forms of CVS access. The first is anonymous and anybody can use it. The second is not and you must have a login to the development server. If you don't know what this means, join the mailing list and find out.

Anyone can checkout source code from our anonymous CVS server. To do so, simply use the following commands (if you are using a GUI CVS client, configure it appropriatly):

cvs -d login
password: anoncvs

cvs -d checkout xml-axis-wsif

Full Remote CVS Access

If you are a Committer and have a login on the Apache development server, this section is for you. If you are not a Committer, but you want to submit patches or even request commit privelages, please see the Jakarta GuideLines page (we follow the same rules) for more information.

To have full access to the CVS server, you need to follow the links depending on the operating system you are using:

Building wsif

Getting help

WSIF shares the Apache AIXS mailing lists axis-user and axis-dev. To aid identifying posts about WSIF, the prefix [WSIF] should be added to each posts subject line.