nmukhi 2002/12/09 14:51:42 Added: java/doc index.html Log: New main page for WSIF, better organized and with more info - still needs work Revision Changes Path 1.1 xml-axis-wsif/java/doc/index.html Index: index.html =================================================================== <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="Author" content="Ant Elder"> <meta name="Author" content="Nirmal Mukhi"> <meta http-equiv="Content-Style-Type" content="text/css"><title>Web Services Invocation Framework for Java API - Overview</title> <link rel="stylesheet" href="../README_files/wsif.txt" type="text/css"> </head> <body alink="#0000ff" bgcolor="#ffffff" leftmargin="2" topmargin="2" marginwidth="2" marginheight="2"> <h1><a name="WSIF Overview">WSIF: <br> Web Services Invocation Framework</a></h1> <ul> <li><a href="#WhatIsIt">What is WSIF?</a> <li><a href="#InstallingIt">How do I download and install WSIF?</a></li> <li><a href="#UsingIt">How do I use WSIF?</a></li> <li><a href="#CustomisingIt">How can I customise my WSIF installation?</a></li> <li><a href="#ContributingToIt">How can I contribute to WSIF?</a></li> <li><a href="#Refs">References</a></li> </ul> <hr width="100%"> <a name="WhatIsIt"/><h2>What is WSIF?</h2> <p>WSIF stands for the Web Services Invocation Framework. It supports a simple Java API for invoking Web services, no matter how or where the services are provided. The framework allows maximum flexibility for the invocation of any WSDL-described service.</p> <p>In the WSDL specification, Web service binding descriptions are <em>extensions</em> to the specification. So the SOAP binding, for example, is one way to expose the abstract functionality (<em>and there could be others</em>). Since WSIF mirrors WSDL very closely, it also views SOAP as just one of several ways you might wish to expose your software's functionality. WSDL thus becomes a normalized description of software, and WSIF is the natural client programming model.</p> <p>The WSIF API allows clients to invoke services focusing on the abstract service description - the portion of WSDL that covers the port types, operations and message exchanges without referring to real protocols. The <em>abstract invocations</em> work because they are backed up by protocol-specific pieces of code called <em>providers</em>. A provider is what conducts the actual message exchanges according to the specifics of a particular protocol - for example, the SOAP provider that is packaged with WSIF uses a specific SOAP engine like Axis to do the real work.</p> <p>The decoupling of the abstract invocation from the real provider that does the work results in a flexible programming model that allows dynamic invocation, late binding, clients being unaware of large scale changes to services - such as service migration, change of protocols, etc. WSIF also allows new providers to be registered dynamically, so you could enhance your client's capability without ever having to recompile its code or redeploy it.</p> <p>Using WSIF, WSDL can become the centerpiece of an integration framework for accessing software running on diverse platforms and using widely varying protocols. The only precondition is that you need to describe your software using WSDL, and include in its description a binding that your client's WSIF framework has a provider for. WSIF defines and comes packaged with providers for local java, EJB, JMS, and JCA protocols. That means you can define an EJB or a JMS-accessible service directly as a WSDL binding and access it transparently using WSIF, using the same API you would for a SOAP service or even a local java class.</p> <p>For more information, take a look at the <a href="faq.htm">WSIF FAQ</a>. <p>Put a picture showing WSIF client with pluggable providers to access service using different protocols.</p> <hr width="100%"> <a name="InstallingIt"/><h2>How do I download and install WSIF?</h2> <hr width="100%"> <a name="UsingIt"/><h2>How do I use WSIF?</h2> <p>After you have successfully downloaded and installed WSIF, you can test your installation by <a href="samples.html">running the samples</a>. If you are able to run all the samples successfully you should have a very good idea of what you can do with WSIF. Essentially once you have a WSDL file with a binding that WSIF understands (such as SOAP, EJB, Java, JMS, JCA, etc.) you can write a client that uses WSIF's APIs - the dynamic invocation API or the stub-based invocation - to use this service.</p> <p>Traditionally, the burden of dealing with new protocols has been a carried by the server-side. Software has to morph itself (through the addition of wrappers) to look like something the client expects to see. With WSIF, the software remains exactly the same - we just get the client to use WSIF's binding independent API, and through the addition of providers, we can mix and match protocols as we please.</p> <p><em>Service</em> is a very liberal term for WSIF! Anything that can be described in WSDL qualifies as a service and is something you can acess using the WSIF API. Moreover, since WSDL is extensible, potentially everything can be described using WSDL. The next section describes how you can define your own bindings and write your own WSIF providers.</p> <hr width="100%"> <a name="CustomisingIt"/><h2>How can I customise my WSIF installation?</h2> <p>There are many points within the WSIF API that allow for customisation. <a href="samples.html">An advanced WSIF sample</a> demonstrates how to write your own WSIF service factory so that dynamic binding selection follows your own customised algorithm. The user can discover other customisation points by examining <a href="http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-axis-wsif/java/docs/apidocs/index.html">WSIF's core API</a>.</p> <p>Larger scale customisation involves finding ways to expose software that uses your properietary protocols through WSDL, so that you can then access this software using WSIF's APIs. To do this, you need to take care of the following:</p> <ol> <li><a href="how_to_wsdl_extensions.htm">Writing your own WSDL extensions to support new protocols</a></li> <li><a href="how_to_provider.htm">Writing your own WSIF providers to support customised WSIF extensions</a></li> </ol> <hr width="100%"> <a name="ContributingToIt"/><h2>How can I contribute to WSIF?</h2> <p>You can contribute to WSIF by participating in discussions on the <A href="http://xml.apache.org/axis/mail.html">axis-user and axis-dev mailing lists</A>. Be sure to prefix the subject of your WSIF-related emails with <tt>[wsif]</tt>. If you find something that outstanding issue or bug that interests you, feel free to download WSIF's source code and work on it. Below you will find instructions for accessing the source code.</p> <p>You can find a list of outstanding bugs from <a href="http://nagoya.apache.org/bugzilla/buglist.cgi?long_desc=wsif&long_desc_type=allwordssubstr">Bugzilla</a>.</p> <h3>Prerequisites for building WSIF</h3> <P>A J2SE v1.3 SDK (eg from <A href="http://java.sun.com/j2se">Java J2SE site</A>) and the Apache Jakarta Ant tool to build wsif. Ant is available at the <A href="http://jakarta.apache.org/ant">Apache ANT website</A>. To build WSIF the jars from the following packages are required:</P><BLOCKQUOTE><TABLE width="90%"> <TBODY> <TR> <TD width="573">JAXP compliant XML parser, such as <A href="http://xml.apache.org/xerces2-j/index.html">Apache Xerces</A>.</TD> <TD width="367">xercesImpl.jar xmlParserAPIs.jar</TD> </TR> <TR> <TD width="573">WSDL for Java API (WSDL4J), from the <A href="http://www-124.ibm.com/developerworks/projects/wsdl4j/">IBM developerWorks site</A>. </TD> <TD width="367">wsdl4j.jar qname.jar</TD> </TR> <TR> <TD width="573">Apache SOAP, from the <A href="http://xml.apache.org/soap">Apache SOAP site</A></TD> <TD width="367">soap.jar</TD> </TR> <TR> <TD width="573">Apache Axis, from the <A href="http://xml.apache.org/axis">Apache Axis site</A></TD> <TD width="367">axis.jar saaj.jar jaxrpc.jar commons-logging.jar</TD> </TR> <TR> <TD width="573">J2EE 1.3 from the <A href="http://java.sun.com/j2ee/">Java J2EE site</A></TD> <TD width="367">j2ee.jar</TD> </TR> </TBODY> </TABLE> </BLOCKQUOTE> <P>Currently, in order to successfully build WSIF, all the above prerequisites are required no matter which providers are going to be used.</P> <h3><a name="sourcecode">Accessing Builds and Source Code</a></h3> <p>The source code for this package is available on the Apache web site. Individual files can be accessed using the web-based <a href="http://cvs.apache.org/viewcvs.cgi/xml-axis-wsif/" target="_blank">CVS interface</a>. The entire package can be downloaded using the following instructions.</p> <h3><b><font size="+1">Accessing the Nightly Builds</font></b></h3> <p>This package is built nightly along with Axis. The build will create two zip files: wsif-bin-1.2.zip and xml-axis.wsif-src.zip. 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 <a href="http://cvs.apache.org/dist/axis/nightly/" target="_blank">Axis nightly builds</a>.</p> <H3><B><FONT size="+1">Accessing the Source Tree (AnonCVS)</FONT></B></H3> <p>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 <a href="http://xml.apache.org/axis/mail.html">mailing list</a> and find out.</p> <p>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): </p><blockquote> <table width="90%"> <tbody> <tr bgcolor="#f2c0f6"> <td> <pre>cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic login password: anoncvs cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic checkout xml-axis-wsif</pre> </td> </tr> </tbody> </table> </blockquote> <h3><b><font size="+1">Full Remote CVS Access</font></b> </h3> <p>If you are a <i>Committer</i> 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 <a href="http://jakarta.apache.org/site/guidelines.html" target="newone">Jakarta GuideLines </a>page (we follow the same rules) for more information. </p> <p>To have full access to the CVS server, you need to follow the links depending on the operating system you are using: </p><ul> <li><a href="http://jakarta.apache.org/site/cvsonunix.html" target="new">Unix</a> </li><li><a href="http://jakarta.apache.org/site/cvsonwin32.html" target="new">Windows</a> </li> </ul> <h3>Building wsif</h3> <ul> <li>Obtain all the necessary jar files as listed in the prerequisites. </li><li>Set required environment variables, including, JAVA_HOME, ANT_HOME. </li><li>From the root directory of wsif (where build.xml is located), run <pre>ant -Dwsif.build.classpath=<classpath> <target></pre> where <classpath> contains the location of the preequisite JAR files<br> <br> and, where <target> is one of the following: <ul> <li>compile: Compiles the API </li><li>samples: Compiles the samples </li><li>javadocs: Builds the javadoc </li><li>srcdist: Creates the source distribution zip file. </li><li>dist: Creates the binary distribution zip file. </li><li>clean: Removes built files. </li><li>all: Cleans, creates source and binary distribution zip files. </li></ul> </li></ul> <hr width="100%"> <h2>Reference</h2> <ul> <li><a href="http://www.research.ibm.com/people/b/bth/OOWS2001/duftler.pdf">WSIF Framework proposal</a> </li><LI><A href="http://www.alphaworks.ibm.com/tech/wsif">IBM's original alphaWorks WSIF site</A></LI> <LI>The W3C <A href="http://www.w3.org/TR/wsdl">Web Services Description Language (WSDL) specification</A>, <A href="http://www.jcp.org/jsr/detail/110.jsp">JSR110</A> describing the Java APIs for WSDL, and the <A href="http://oss.software.ibm.com/developerworks/projects/wsdl4j">WSDL4J</A> opensource site.</LI> <LI>IBM developerWorks articles <A href="http://www-106.ibm.com/developerworks/webservices/library/ws-wsif.html">Web service invocation sans SOAP</A> and <A href="http://www-106.ibm.com/developerworks/webservices/library/ws-appwsif.html?loc=dwmain">Applying the Web services invocation framework</A></LI> <LI><A href="http://www.ericleach.com/sa2002/presentations/PFremantle-IBM.pdf">A presentation from Paul Fremantle at the 2002 Software Architecture conference</A></LI> <LI><A href="http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-axis-wsif/java/docs/apidocs/index.html">Javadoc for the wsif API classes</A><BR> [<B>Note:</B> This link will work only after this package has been built.]</LI> </ul> <hr width="100%"> </body></html>