Author: dasarath
Date: Wed May 23 11:46:43 2007
New Revision: 541021

URL: http://svn.apache.org/viewvc?view=rev&rev=541021
Log: (empty)

Added:
    webservices/kandula/branches/Kandula_1/xdocs/ws-at--how_to_use.xml
Removed:
    webservices/kandula/branches/Kandula_1/xdocs/architecture-guide.html
    webservices/kandula/branches/Kandula_1/xdocs/img/
    webservices/kandula/branches/Kandula_1/xdocs/index.html
Modified:
    webservices/kandula/branches/Kandula_1/xdocs/navigation.xml

Modified: webservices/kandula/branches/Kandula_1/xdocs/navigation.xml
URL: 
http://svn.apache.org/viewvc/webservices/kandula/branches/Kandula_1/xdocs/navigation.xml?view=diff&rev=541021&r1=541020&r2=541021
==============================================================================
--- webservices/kandula/branches/Kandula_1/xdocs/navigation.xml (original)
+++ webservices/kandula/branches/Kandula_1/xdocs/navigation.xml Wed May 23 
11:46:43 2007
@@ -1,9 +1,8 @@
-
-<project name="Kandula">
-  <title>Kandula</title>
+<project name="Kandula-1">
+  <title>Kandula-1</title>
   <body>
-    <menu name="Kandula">
-               <item name="Architecture Guide" href="architecture-guide.html"/>
+    <menu name="Kandula-1">
+               <item name="WS-AT How-To" href="ws-at--how_to_use.html"/>
                <item name="WS-BA How-To" href="ws-ba--how_to_use.html"/>
     </menu>
   </body>

Added: webservices/kandula/branches/Kandula_1/xdocs/ws-at--how_to_use.xml
URL: 
http://svn.apache.org/viewvc/webservices/kandula/branches/Kandula_1/xdocs/ws-at--how_to_use.xml?view=auto&rev=541021
==============================================================================
--- webservices/kandula/branches/Kandula_1/xdocs/ws-at--how_to_use.xml (added)
+++ webservices/kandula/branches/Kandula_1/xdocs/ws-at--how_to_use.xml Wed May 
23 11:46:43 2007
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<document>
+       <properties>
+               <author>Dasarath Weeratunge ([EMAIL PROTECTED])</author>
+               <title>WS-AtomicTransaction for Kandula-1 How-To</title>
+       </properties>
+<body>
+        <section name="Atomic Transaction basics">
+                <p>
+                    Think of a hypothetical web service that provides banking 
services. The service
+                    provides 2 operations: a credit operation and a debit 
operation. Now if the two
+                    operations are to be used to perform a monetary transfer 
between two accounts, it
+                    must be ensured that both operations succeed. Under these 
circumstances, the web
+                    services coordination framework can be used to ensure the 
atomicity of operations.</p>
+                <p>
+                    The sample code below shows how a non-J2EE client may use 
the Kandula implementation
+                    in this scenario.</p>
+                <source>
+import org.apache.kandula.coordinator.at.TransactionManagerImpl;
+
+public class ...  {
+    
+    public ... foo(....) {
+        Bank bank= new BankServiceLocator().getBank();
+        TransactionManagerImpl tm =
+            TransactionManagerImpl.getInstance();
+        tm.begin();
+        try {
+            bank.credit(1001, 10);
+            bank.debit(1002, 10);
+        }catch (Exception e) {
+            tm.rollback();
+        }
+        tm.commit();
+    }
+}
+</source>
+                <p>
+                    Though the web services coordination framework is platform 
independent, participant
+                    services unavoidably need to use platform-specific 
technologies to perform transactional
+                    work. For instance, if the banking service mentioned above 
is implemented in J2EE,
+                    its would use JTA. Hence in the context of coordinated 
activities, the underlying
+                    JTA runtime is required to coordinate with an external 
coordinator to decide if
+                    and when to make any work performed as part of such 
activities, persistent. In this
+                    scenario, Kandula interposes between the local JTA 
implementation and external coordinator
+                    to allow transactions to be propagated to and from J2EE to 
web services domain.</p>
+                <p>
+                    To illustrate the point further, consider how the same use 
case illustrated above
+                    would be implemented by a J2EE client.</p>
+                <source>
+public class ... implements SessionBean {
+    private SessionContext ctx;
+
+    public ... foo(....) {
+        Bank bank= new BankServiceLocator().getBank();
+        UserTransaction ut= ctx.getUserTransaction();
+        ut.begin();
+        try {
+            bank.credit(1001, 10);
+            bank.debit(1002, 10);
+        }catch (Exception e) {
+            ut.rollback();
+        }
+        ut.commit();
+    }
+}
+</source> 
+                <p>
+                    Notice that the component uses JTA to ensure atomicity of 
operations. At runtime
+                    however, the transaction context of the calling thread is 
propagated to the remote
+                    service using the web services coordination framework.</p>
+</section>               
+<section name="How to download and build">
+                <ol>
+                    <li>
+                        <p>
+                            Checkout Kandula1 from the svn repository using an 
svn client at the following URL:
+                            <a 
href="https://svn.apache.org/repos/asf/webservices/kandula/branches/Kandula_1/";>https://svn.apache.org/repos/asf/webservices/kandula/branches/Kandula_1/</a>.
+                            Let us call the directory to which you checked out 
Kandula1, <tt>KANDULA_HOME</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Download and install Apache Tomcat. (5.0 or later 
required).</p>
+                    </li>
+                    <li>
+                        <p>
+                            Download and install Apache Axis (1.3 or later 
required). Do NOT deploy Kandula
+                            on a version of Axis different from the version on 
which it was built. Rebuild Kandula
+                            if this is required on the required version by 
modifying the build files. However,
+                            you may use different Axis versions on 
client/server ends.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Download and install Apache Maven 1.x (2.0 not 
supported).</p>
+                    </li>
+                    <li>
+                        <p>
+                            Download and install Apache Ant (1.6.5 or 
later).</p>
+                    </li>
+                    <li>
+                        <p>
+                            Set the kandula.context property in 
<tt>%KANDULA_HOME%/src/conf/kandula.properties</tt>,
+                            to the context under which services are deployed 
in Axis. Normally this is: <tt>http://localhost:8080/axis/services/</tt></p>
+                    </li>
+                    <li>
+                        <p>
+                            Build Kandula using Maven. Use the command 
<tt>maven</tt> in <tt>%KANDULA_HOME%</tt>.
+                            This will create the directory 
<tt>%KANDULA_HOME%/target</tt>. You will find the
+                            <tt>kandula-0.2-SNAPSHOT.jar</tt> along with all 
other required <tt>*.jar</tt> files
+                            in the directory 
<tt>%KANDULA_HOME%/target/lib</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            To build the sample applications, move to each of 
the sample directories in <tt>%KANDULA_HOME%/src/samples/</tt>
+                            and use the command <tt>ant dist</tt>.</p>
+                    </li>
+                </ol>
+</section>
+<section name="How to deploy">
+                <ol>
+                    <li>
+                        <p>
+                            Move all Apache Axis jars from 
<tt>%AXIS_DEPLOY%/WEB-INF/lib</tt> to <tt>%TOMCAT_HOME%/shared/lib</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Move all <tt>geronimo-*.jar</tt> files, 
<tt>addressing-SNAPSHOT.jar</tt> and <tt>kandula-0.2-SNAPSHOT.jar</tt>
+                            to <tt>%TOMCAT_HOME%/shared/lib</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Copy the <tt>*.jar</tt> file in the <tt>build</tt> 
directory of each sample application
+                            to <tt>%AXIS_DEPLOY%/WEB-INF/lib</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Copy the <tt>server-config.wsdd</tt> file in 
<tt>%KANDULA_HOME%/src/conf/</tt> to
+                            <tt>%AXIS_DEPLOY%/WEB-INF/</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Copy the <tt>client-config.wsdd</tt> file in 
<tt>%KANDULA_HOME%/src/conf/</tt> to
+                            <tt>%AXIS_DEPLOY%/WEB-INF/classes</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Start Tomcat. To assure that Kandula has been 
properly deployed, first list all
+                            deployed services in Axis from the "Happy Axis" 
page and then verify that you can
+                            view the WSDL of each service.</p>
+                    </li>
+                </ol>
+</section>
+<section name="How to run the sample applications">
+                <p>
+                    Sample applications reside in the directory 
<tt>%KANDULA_HOME%/src/samples</tt>.
+                    The Axis artifacts necessary to deploy all the samples are 
also included in <tt>%KANDULA_HOME%/src/conf/server-config.wsdd</tt>.
+                    Hence unless you deploy the samples along with Kandula, 
you need to remove those
+                    elements from the <tt>server-config.wsdd</tt> file copied 
to <tt>%AXIS_DEPLOY%/WEB-INF/</tt>
+                    before you start Tomcat. Further, different samples use 
different handlers. You
+                    need to change your handler configuration as appropriate 
when you try out a particular
+                    sample application.</p>
+                <subsection name="How to setup the TCP sniffer">
+                <p>
+                    The default configuration of Kandula assumes that you will 
use a TCP sniffer such
+                    as the "tcpmon" tool that comes with Apache Axis to 
monitor TCP traffic while running
+                    the sample applications. We also assume that Tomcat would 
be run on port <tt>8080</tt>
+                    and services in Axis are deployed under the URL: 
<tt>http://localhost:8080/axis/services/</tt>.
+                    Hence, to facilitate monitoring of traffic, all Stubs in 
Kandula forward messages
+                    that would otherwise be forwarded to port 8080 to port 
8081.</p>
+                <p>
+                    Therefore, inorder to run the samples (or any other 
application that uses Kandula
+                    in the default setting) you MUST forward port 8081 (of 
your local machine) to port
+                    8080.</p>
+                <p>
+                    You can change this behaviour by editing the WSDL files in 
<tt>%KANDULA_HOME%/src/schema/</tt>
+                    and rebuilding Kandula thereafter.</p>
+       </subsection>
+        <subsection name="Test-suite1">
+                <p>
+                    This sample application demostrates how to use Kandula to 
initiate and terminate
+                    transactions using the WS-AtomicTransaction protocol. It 
also demostrates the behaviour
+                    of Kandula under a number of failure scenarios. Note that 
we use pseudo XAResouces
+                    instead of actual applications such as Databases, 
Messaging etc. to simplify the
+                    testing process. Hence the application explicitly enlists 
all XAResources used in
+                    operations. This would not be the case with real 
applications however. The container
+                    would normally takecare of this for you, transparently.</p>
+                <p>
+                    The most important aspect of this sample application is 
that it demostrates how
+                    Kandula can be used to expose transactional resources in a 
J2EE environment via
+                    the web services transaction management framework. After 
the revision of code in
+                    December 2005, Kandula1 now supports ONLY the "Geronimo" 
Transaction Manager. The
+                    required jars are automatically downloaded by Maven during 
the build process.</p>
+                <p>
+                    To run the sample, do the following.</p>
+                <ol>
+                    <li>
+                        <p>
+                            First ensure that the transaction handler used in 
your <tt>%AXIS_DEPLOY%/WEB-INF/classes/client-config.wsdd</tt>
+                            is <tt>org.apache.kandula.geronimo.TxHandler</tt>.
+                        </p>
+                    </li>
+                    <li>
+                        <p>
+                            Next open up the JUnit test case provided in the 
<tt>src</tt> directory in your
+                            favourite IDE. This file contains a number of test 
cases. Each test case should
+                            be run on its own. If you run a number of test 
cases this would result in a whole
+                            lot of messages which would be rather difficult to 
interpret. Also note that some
+                            of the test scenarios are positive tests while 
some others are negative. A short
+                            description of the success criteria of most of the 
test cases can be found in the
+                            <tt>success-criteria.txt</tt> file in 
<tt>%KANDULA_HOME%/src/samples/test-suite1/</tt>.</p>
+                    </li>
+                    <li>
+                        <p>
+                            To run the test cases use the standard JUnit test 
harness of your IDE.</p>
+                    </li>
+                </ol>
+</subsection>
+<subsection name="InteropIBM">
+                <p>
+                    The objective of this sample application is to test 
Kandula against IBM WS-AtomicTransaction
+                    implementation for interoperability. For details on 
interoperability test, please
+                    refer to the documentation available from: <a 
href="http://wsi.alphaworks.ibm.com:8080/interop/index.html";>
+                        
http://wsi.alphaworks.ibm.com:8080/interop/index.html</a> . We suggest that
+                    you read through this specification before moving on since 
some of the terminology
+                    used in the following section is explained in the 
specification.</p>
+                <p>
+                    The sample allows you to exercies Kandula in both IA 
(Initiator Application) and
+                    PA (Participant Application) configurations. We have 
successfully tested Kandula
+                    in IA role against the IBM implementation in PA role for 
all scenarios except those
+                    that involve WS-Security. Testing under the opposite 
configuration is still under
+                    way. From the tests carried out thus far, Kandula in PA 
role interoperates with
+                    IBM successfully in all scenarios upto Section 5.0 of the 
test scenario specification.</p>
+                <p>
+                    To run this sample, you need to use 
<tt>org.apache.kandula.coordinator.at.TxHandler</tt>
+                    in your 
<tt>%AXIS_DEPLOY%/WEB-INF/classes/client-config.wsdd</tt>. Most importantly
+                    you MUST have an externally visible URL for your web 
container. If not, you may
+                    setup and HTTP tunnel. However, in this case you must set 
the <tt>kandula.context</tt>
+                    property to the externally visible URL. If neither option 
is available, you may
+                    still run the sample using Kandula in both IA and PA 
configurations simultaniously.
+                    The resulting message exchanges SHOULD still comply with 
the documented success
+                    criteria.</p>
+                <p>
+                    Further, in this particular scenario, the Kandula1 Stubs 
are pre-configured to forward
+                    any messages addressed to 
<tt>http://wsi.alphaworks.ibm.com:8080/</tt> to <tt>http://localhost:8082/</tt>.
+                    This allows you to monitor all outgoing traffic. So before 
you run the sample forward
+                    the port 8082 of your local machine to 
<tt>http://wsi.alphaworks.ibm.com:8080/</tt></p>
+                <p>
+                    To test Kandula in PA role follow the steps below.</p>
+                <ol>
+                    <li>
+                        <p>
+                            Deploy the sample and start Tomcat. Ensure that 
InteropService is listed (along
+                            with its operations) under deployed services in 
Axis and that you are able to view
+                            the WSDL.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Open the page <a 
href="http://wsi.alphaworks.ibm.com:8080/wstx/interop.jsp";>http://wsi.alphaworks.ibm.com:8080/wstx/interop.jsp</a>
+                            in your web browser.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Enter the URL of your "InteropService" as the 
participant destination. Here, if
+                            you want to monitor incoming traffic, change the 
port from 8080 to 8081 when entering
+                            the URL and forward port 8081 to 8080 as 
before.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Select the test scenario you want to run. Do not 
select scenarios from Sections
+                            5.0 or later since these have not been tested yet 
under this setting.</p>
+                    </li>
+                    <li>
+                        <p>
+                            Select run test.</p>
+                    </li>
+                </ol>
+</subsection>
+</section>
+</body>
+</document>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to