You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by he...@apache.org on 2004/06/13 18:17:02 UTC

cvs commit: ws-axis/contrib/ews/docs/dev webservice.xml web.xml validate.html service-ref1.xml server.html list5.txt list4.txt list3.txt list2.txt list1.txt Geronimov-axisIntegration.html ejb-jar.xml convert.html client.html

hemapani    2004/06/13 09:17:02

  Added:       contrib/ews/docs/dev webservice.xml web.xml validate.html
                        service-ref1.xml server.html list5.txt list4.txt
                        list3.txt list2.txt list1.txt
                        Geronimov-axisIntegration.html ejb-jar.xml
                        convert.html client.html
  Log:
  update the ews documentations
  merge old documnetations and updates them
  remove outdated documents
  
  Revision  Changes    Path
  1.1                  ws-axis/contrib/ews/docs/dev/webservice.xml
  
  Index: webservice.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <webservices xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:ns1="http://www.Monson-Haefel.com/jwsbook/BookQuote"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  http://www.ibm.com/standards/xml/webservices/j2ee/j2ee_web_services_1_1.xsd" version="1.1">
  <webservice-description>
  	<webservice-description-name>MathFaceService</webservice-description-name>
  	<wsdl-file>math.wsdl</wsdl-file>
  	<jaxrpc-mapping-file>jaxrpc-mapping.xml</jaxrpc-mapping-file>
  	<port-component>
  		<port-component-name>MathFace</port-component-name>
  		<wsdl-port xmlns:ns1="http://math.testData">ns1:math</wsdl-port>
  		<service-endpoint-interface>testData.math.MathFace</service-endpoint-interface>
  		<service-impl-bean>
  			<ejb-link >MathFace</ejb-link>
  		</service-impl-bean>
  	</port-component>
  	</webservice-description>
  </webservices>
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/web.xml
  
  Index: web.xml
  ===================================================================
    <web-app>
  	  <display-name>Apache-Axis</display-name> 
  	  <servlet>
  		  <servlet-name>MathFace</servlet-name> 
  		  <display-name>MathFace Servlet</display-name> 
  		  <servlet-class>testData.math.MathFaceImpl</servlet-class> 
  	  </servlet>
    </web-app>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/validate.html
  
  Index: validate.html
  ===================================================================
  <html>
  <head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="../ews.css">
  </head>
  <body>
  <h1>Validate the deployment artifacts</h1>
  <p>The deployment tool starts the deployment process by examining the deployable artifact and determining which modules are Web services enabled by looking for a webservices.xml deployment descriptor file contained within the module. Deployment of services occurs before resolution of service references. This is done to allow deployment to update the WSDL port addresses before the service references to them are processed.</p>
  
  <p>Validation of the artifact packaging is performed to ensure that:</p>
  <ul>
      <li>Every port in every WSDL defined in the Web services deployment descriptor has a corresponding port-component element.</li>
      <li>If the Service Implementation Bean is an EJB, the transaction attributes for the methods defined by the SEI do not include Mandatory.</li>
      <li>JAX-RPC service components are only packaged within a WAR file.</li>
      <li>Stateless session bean Web services are only packaged within an EJB-JAR file.</li>
      <li>The WSDL bindings used by the WSDL ports are supported by the Web Services for J2EE runtime. Bindings that are not supported may be declared within the WSDL if no port uses them.</li>
  </ul>
  
  </body>
  </html>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/service-ref1.xml
  
  Index: service-ref1.xml
  ===================================================================
  <service-ref xmlns="http://java.sun.com/xml/ns/j2ee">
       <service-ref-name>service/Joe</service-ref-name>
       <service-interface>javax.xml.rpc.Service</service-interface>
       <wsdl-file>WEB-INF/joe.wsdl</wsdl-file>
       <jaxrpc-mapping-file>WEB-INF/joe.xml</jaxrpc-mapping-file>
       <service-qname></service-qname>
       <port-component-ref>
           <service-endpoint-interface>sample.Joe</service-endpoint-interface>
           <port-component-link>JoePort</port-component-link>
       </port-component-ref>
       <handler>
           <handler-name></handler-name>
           <handler-class></handler-class>
       </handler>
  </service-ref>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/server.html
  
  Index: server.html
  ===================================================================
  <html>
  <head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="../ews.css">
  </head>
  <body>
  <h1>Server side Implementation</h1>
  <p>The Server side implementation is based on generating EJB/Java class that is realized by the Service implementation Bean. Then a web service is generated to receive the SOAP request and sending the request to the EJB/Java Class. The EWS is a tool which will accept a WAR/JAR/EAR file as given by the Usage Scenario�s documentation and generated above explained Web Service and EJB.<p>
  <p>Two cases are explaied below</p>
  
  <h2>JAR/WAR file, Java Class based implementation</h2> 
  	<ol>
  	<li>parse the webservice.xml file</li>
  	<li>if wsdl file and jaxrpc mapping file does not exsits create them using the SEI</li>
  	<li>generate axis skelton for axis using the "wsdl file"</li> 
  	<li>generate the wrapper webservice file</li>
  	<li>generate the one jar file which has all information to deploy the service.
  	(this is not done yet)</li>
  	</ol>
  	
  <h2>JAR/EAR file,EJB based implementation</h2> 	
        <ol>
  	<li>parse the webservice.xml file</li> 
  	<li>if wsdl file and jaxrpc mapping file does not exsits create them using the SEI</li>
  	<li>generate axis skelton for axis using the "wsdl file"</li> 
  	<li>generate ejb remote/local and home interface files.</li> 
  	<li>generate the wrapper webservice file</li>
  	<li>generate the container DD if required</li>
  	<li>if the ejb-jar.xml file has security entry add security handler to axis wsdd file </li>
  	<li>generate the one jar file which has all information to deploy the service.</li>
  	</ol>
  <p>This is how it looks like when the Wraper Web service is generated and deployed in the JAX-RPC runtime</p>
  <h2>Architecture Diagram</h2>
  <img src="../images/server.gif"/>
  <br>
  <h2>Sequance Diagram</h2>
  <ol>
  <img src="../images/seq.png"/>
  <li>The WS client will send the SOAP request to axis.</li> 
  <li>Axis will parse the SOAP request.</li>  
  <li>Axis will call the request message handlers associated with the web service. (they will take care of the security and transaction mapping of the WS).</li>  
  <li>Axis will create the wrapper ws instance. (At this point the axis will call the Geronimo and get a reference to the serviceImplBean of ejb. This may be serviceImplBean itself or a indirect reference.) This will most likely to be taken from a Bean pool.</li>  
  <li>When the webserive method is called in the wrapper Ws the corresponding method in the reference to the service Impl bean will be called.</li>  
  <li>If result exists it will be given to the axis.</li>  
  <li>Axis will call the response handlers associated with the WS.</li>  
  <li>The result is marshaled and sent to the Client as SOAP.</li>  
  </ol>
  
  <h2>Class Diagram</h2>
  <img src="../images/class.png"/>
  <p>The tool will generate dummy Remote(Local) interface and  dummy Home(LocalHome) interface.
  they are for deploy the ejb in the continer and is transparet from the deployer ews user.</p>
  <p>There are three ways the Web Service can accsess the ejb.</p>
  <ol>
  <li><h3><a href="list1.txt">Use the remote interface</a></h3></li>
  <code>
  <pre>
  java.util.Properties env = PropertyLoader.loadProperties("jndi.properties");
  javax.naming.Context initial = new javax.naming.InitialContext(env);
  Object objref = initial.lookup("ejb/bookquote");
  BookQuoteHome home = (BookQuoteHome)PortableRemoteObject
  				.narrow(objref,BookQuoteHome.class);
  return home.create();
  </pre>
  </code>
  <li><h3><a href="list2.txt">Use the Local interface</a></h3></li>
  <code>
  <pre>
  Context initial = new javax.naming.InitialContext();
  Object objref = jndiContext.lookup("java:comp/env/ejb/"bookquote);
  BookQuoteHome home = (BookQuoteHome)objref;
  return home.create();
  </pre>
  </code>
  
  <li><h3><a href="list3.txt">Use the Internals interface</a></h3>
  <code>
  <pre>
  ContainerIndex index = ContainerIndex.getInstance();
  int length = index.length();
  for(int i=0;i<length;i++){
      EJBContainer contianer = index.getContainer(i);
      if(contianer!= null){
          String name = contianer.getEJBName();
          if("BasicStatelessBean".equals(name)){
              Class bean = Class.forName("org.openejb.test.stateless.BasicStatelessBean");		            Object[] arguments = new Object[]{isbn};
  	    try{
  		Object result = container.invoke(callMethod, arguments, null);
  		return ((java.lang.Float)result).floatValue();
  	    }catch(Throwable e){
  	       throw new org.apache.geronimo.ews.ws4j2ee.wsutils.J2EEFault(e);
  	    }
           }	
       }
  }
  </pre>
  </code></li>
  
  
  	
  </ol>
  </body>
  </html>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/list5.txt
  
  Index: list5.txt
  ===================================================================
  package com.jwsbook.jaxrpc;
  import java.rmi.RemoteException;
  import javax.ejb.EJBException;
  import javax.ejb.SessionBean;
  public class BookQuoteBean implements SessionBean{
  	
  public float getBookPrice(java.lang.String isbn) throws java.rmi.RemoteException{
  	return 100;
  }
  public BookQuoteBean() {}
  public void ejbCreate() {}
  public void ejbActivate() throws EJBException, RemoteException {}
  public void ejbPassivate() throws EJBException, RemoteException {}
  public void ejbRemove() throws EJBException, RemoteException {}
  public void setSessionContext(SessionContext arg0)
  	throws EJBException, RemoteException {}
  }
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/list4.txt
  
  Index: list4.txt
  ===================================================================
  package com.jwsbook.jaxrpc;
  public interface BookQuote extends java.rmi.Remote {
  public float getBookPrice(java.lang.String isbn) throws java.rmi.RemoteException, 			com.jwsbook.jaxrpc.InvalidIsbnFault;
  }
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/list3.txt
  
  Index: list3.txt
  ===================================================================
  package com.jwsbook.jaxrpc;
  public class BookQuoteBindingImpl  implements com.jwsbook.jaxrpc.BookQuote{
  	private com.jwsbook.jaxrpc.BookQuote bean = null;
  	private org.openejb.EJBContainer container;
  	public BookQuoteBindingImpl(){
  		String containerID = "com.jwsbook.jaxrpc.BookQuoteBean";
  		org.openejb.ContainerIndex index = org.openejb.ContainerIndex.getInstance();
  		this.container = index.getContainer(containerID);
  	}
  	public float getBookPrice(java.lang.String isbn) throws java.rmi.RemoteException,com.jwsbook.jaxrpc.InvalidIsbnException{
  		java.lang.reflect.Method callMethod = org.apache.geronimo.ews.ws4j2ee.utils.Utils.getJavaMethod("com.jwsbook.jaxrpc.BookQuote","getBookPrice");
  		ContainerIndex index = ContainerIndex.getInstance();
  
              int length = index.length();
  
              for(int i = 0;i<length;i++){
                  EJBContainer contianer = index.getContainer(i);
                  if(contianer!= null){
                  String name = contianer.getEJBName();
                  if("BasicStatelessBean".equals(name)){
                    Class bean = Class.forName("org.openejb.test.stateless.BasicStatelessBean");		            Object[] arguments = new Object[]{isbn};
                    try{
                        Object result = container.invoke(callMethod, arguments, null);
    		          return ((java.lang.Float)result).floatValue();
                    }catch(Throwable e){
                        throw new org.apache.geronimo.ews.ws4j2ee.wsutils.J2EEFault(e);
  	            }
                }	
              }
  	}
  }
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/list2.txt
  
  Index: list2.txt
  ===================================================================
  package com.jwsbook.jaxrpc;
  public class BookQuoteBindingImpl  implements com.jwsbook.jaxrpc.BookQuote,org.apache.geronimo.ews.ws4j2ee.wsutils.ContextAccssible{
  private com.jwsbook.jaxrpc.BookQuoteEJB ejb = null;
  private org.apache.axis.MessageContext msgcontext;
  	public BookQuoteBindingImpl(){}
  	public void setMessageContext(org.apache.axis.MessageContext msgcontext){;
  		this.msgcontext = msgcontext;
  	}
  	public com.jwsbook.jaxrpc.BookQuoteEJB getRemoteRef()throws org.apache.axis.AxisFault{
  		try {
  		    javax.security.auth.callback.CallbackHandler handler
  		        = org.apache.geronimo.ews.ws4j2ee.wsutils.security.jaasmodules.
  		            AutenticationCallbackHandlerFactory.createCallbackHandler(msgcontext);
  		    if(handler != null){
  		        javax.security.auth.login.LoginContext lc
  		            = new javax.security.auth.login.LoginContext("TestClient", handler);
  		        lc.login();
  		    }
  		}catch (javax.security.auth.login.LoginException e) {
  		     e.printStackTrace();
  		     throw org.apache.axis.AxisFault.makeFault(e);
  		}
  		try{
  			javax.naming.Context initial = new javax.naming.InitialContext();
  			Object objref = jndiContext.lookup("java:comp/env/ejb/"bookquote);
  			com.jwsbook.jaxrpc.BookQuoteHome home = (com.jwsbook.jaxrpc.BookQuoteHome)objref;
  			return home.create();
  		}catch (Exception e) {
  		    throw org.apache.axis.AxisFault.makeFault(e);
  		}
  	}
  	public float getBookPrice(java.lang.String isbn) throws java.rmi.RemoteException,com.jwsbook.jaxrpc.InvalidIsbnException{
  		if(ejb ==  null)
  			ejb = getRemoteRef();
  		return ejb.getBookPrice(isbn);
  	}
  }
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/list1.txt
  
  Index: list1.txt
  ===================================================================
  package com.jwsbook.jaxrpc;
  public class BookQuoteBindingImpl  implements com.jwsbook.jaxrpc.BookQuote,org.apache.geronimo.ews.ws4j2ee.wsutils.ContextAccssible{
  private com.jwsbook.jaxrpc.BookQuoteEJB ejb = null;
  private org.apache.axis.MessageContext msgcontext;
  	public BookQuoteBindingImpl(){}
  	public void setMessageContext(org.apache.axis.MessageContext msgcontext){;
  		this.msgcontext = msgcontext;
  	}
  	public com.jwsbook.jaxrpc.BookQuoteEJB getRemoteRef()throws org.apache.axis.AxisFault{
  		try {
  		if(msgcontext == null){
  				msgcontext = org.apache.axis.MessageContext.getCurrentContext();
  		}
  		    javax.security.auth.callback.CallbackHandler handler
  		        = org.apache.geronimo.ews.ws4j2ee.wsutils.security.jaasmodules.
  		            AutenticationCallbackHandlerFactory.createCallbackHandler(msgcontext);
  		    if(handler != null){
  		        javax.security.auth.login.LoginContext lc
  		            = new javax.security.auth.login.LoginContext("TestClient", handler);
  		        lc.login();
  		    }
  		}catch (javax.security.auth.login.LoginException e) {
  		     e.printStackTrace();
  		     throw org.apache.axis.AxisFault.makeFault(e);
  		}
  		try{
  			java.util.Properties env = org.apache.geronimo.ews.ws4j2ee.wsutils.PropertyLoader.loadProperties("jndi.properties");
  			javax.naming.Context initial = new javax.naming.InitialContext(env);
  			Object objref = initial.lookup("ejb/bookquote");
  			com.jwsbook.jaxrpc.BookQuoteHome home = 
  				(com.jwsbook.jaxrpc.BookQuoteHome)javax.rmi.PortableRemoteObject.narrow(objref,com.jwsbook.jaxrpc.BookQuoteHome.class);
  			return home.create();
  		}catch (Exception e) {
  		    throw org.apache.axis.AxisFault.makeFault(e);
  		}
  	}
  	public float getBookPrice(java.lang.String isbn) throws java.rmi.RemoteException,com.jwsbook.jaxrpc.InvalidIsbnException{
  		if(ejb ==  null)
  			ejb = getRemoteRef();
  		return ejb.getBookPrice(isbn);
  	}
  }
  
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/Geronimov-axisIntegration.html
  
  Index: Geronimov-axisIntegration.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><html><head>
  	<meta http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1"><title></title>
  	
  	<meta name="GENERATOR" content="OpenOffice.org 1.0.2  (Linux)">
  	<meta name="CREATED" content="20031201;21290000">
  	<meta name="CHANGED" content="20031204;21345900">
  	<meta name="SDFOOTNOTE" content=";;;;P">
  	<meta name="SDENDNOTE" content="ARABIC">
  	<style>
  	<!--
  		@page { size: 21.59cm 27.94cm; margin-left: 3cm; margin-right: 3cm; margin-top: 1.27cm; margin-bottom: 1.27cm }
  		P { margin-bottom: 0.21cm }
  		H1 { margin-top: 0.78cm; margin-bottom: 0.11cm; line-height: 100%; page-break-after: auto }
  		H1.western { font-family: "Arial"; font-size: 17pt; so-language: en-US }
  		H1.cjk { font-family: "Arial"; font-size: 17pt }
  		H1.ctl { font-family: "Arial"; font-size: 17pt }
  	-->
  	</style></head>
  
  <body lang="en-US">
  <div type="HEADER">
  	<p style="margin-bottom: 0cm;"><br>
  	</p>
  </div>
  <h1 lang="en-GB" class="western" style="margin-top: 0.42cm; margin-bottom: 0cm;">
  <font size="4" style="font-size: 16pt;">Geronimo &#8211; JSR-109 Service
  Impl Integration</font></h1>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><br>
  </p>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">The
  geronimo &#8211; JSR-109 Service Impl integration basically consists
  in the definition of a deployment architecture that defines the way
  how web services are implemented in Geronimo server and a set of
  interfaces that will be used by classes responsible for the ws's
  deployment..</font></font></p>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><br>
  </p>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">The
  architecture proposal consist in:</font></font></p>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><br>
  </p>
  <ul>
  	<li><p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">A
  	servlet listener that will wait for soap calls. This servlet provide
  	by Axis will act as a JAX-RPC handler and will be in charge to
  	dispatch request either to POJOs or EJBs.</font></font></p>
  	</li><li><p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">The
  	Axis webapp will be deployed  at startup. Or if It's possible as
  	soon as JAX-RPC handler is need.</font></font></p>
  	</li><li><p lang="en-GB" style="margin-bottom: 0cm;"><font face="Arial"><font size="2" style="font-size: 11pt;">There
  	will be only one web-app where will reside the listeners and impl
  	for the web ws, and the proxys to call the ejb service impl.</font></font></p>
  	</li><li><p lang="en-GB" style="margin-bottom: 0cm;"></p>
  </li></ul>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">-
  Deployment</font></font></p>
  <p lang="en-GB" style="margin-bottom: 0cm; line-height: 100%;"><br>
  </p>
  <ol>
  	<li><p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">We
  	will extend existing module in charge of WAR  and EJB-JAR
  	deployment, to take into consideration specific ws deployment files.</font></font></p>
  	</li><li><p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">A
  	service provided by the JSR-109 team will be used for the parsing of
  	files descriptor related to ws like webservice.xml. If we deployed
  	the Axis webapp the first time a JAX-RPC handler is need, we will
  	trigger an event that will do it </font></font>
  	</p>
  	</li><li><p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">Once
  	the parsing is done the binding in JNDI will occur.</font></font></p>
  	</li><li><p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">Then
  	the service endpoint implementation given to axis. We will use
  	Axis's integration facilities to register each ws in Axis's servlet.</font></font></p>
  </li></ol>
  <p style="margin-bottom: 0cm; line-height: 100%;"><br>
  </p>
  <p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">The
  figure shows the ws deployent architecture defined for our proposal.</font></font></p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm; page-break-before: always;">
  <img src="../images/Geronimov1_002.jpg" name="Graphic1" align="left" width="450" height="825" border="0"><br clear="left"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><font face="Arial"><font size="2" style="font-size: 11pt;">This
  figure shows the behavior of our proposal during deployment of apps.</font></font></p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><img src="../images/Geronimov1.jpg" name="Graphic2" align="left" width="484" height="628" border="0"><br clear="left"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm;"><br>
  </p>
  <p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">Our
  concerns.</font></font></p>
  <p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">1.
   We have to be sure that the service has started after the web
  container, because our service depends on it. How do we manage
  dependencies. ?</font></font></p>
  <p style="margin-bottom: 0cm; line-height: 100%;"><font face="Arial"><font size="2" style="font-size: 11pt;">2.
  Is it possible to have more than one listener (JAX-RPC handler) ?</font></font></p>
  <div type="FOOTER">
  	<p style="margin-top: 1.23cm; margin-bottom: 0cm;"><br>
  	</p>
  </div>
  </body></html>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/ejb-jar.xml
  
  Index: ejb-jar.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <ejb-jar>
  <display-name>math</display-name>
  	<enterprise-beans>
  		<session>
  			<display-name>BookQuoteService</display-name>
  			<ejb-name>MathFace</ejb-name>
  			<home>testData.math.MathFaceHome</home>
  			<remote>testData.math.MathFace</remote>
  			<ejb-class>testData.math.MathFaceImpl</ejb-class>
  			<session-type>Stateless</session-type>
  			<transaction-type>Bean</transaction-type>
  		</session
  >	</enterprise-beans>
  </ejb-jar>
  
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/convert.html
  
  Index: convert.html
  ===================================================================
  <html>
  <head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="../ews.css">
  </head>
  <body>
  <h1>Convert the Web services into standard J2EE artifacts</h1>
  <h2>Web component</h2> 
  <p>If the implementation is a JAX-RPC Service Endpoint, a servlet is generated to handle parsing the incoming SOAP request and dispatch it to an instance of the JAX-RPC service component. The generated servlet class is dependent on threading model of the JAX-RPC Service Endpoint. The web.xml deployment descriptor is updated to replace the JAX-RPC Service Endpoint class with the generated servlet class. If the JAX-RPC
  Service Endpoint was specified without a corresponding servlet-mapping, the deployment tool generates one. The WSDL port address for the Port component is the combination of the web app context-root and servlet url-pattern.</p> 
  <h2>Stateless Bean Component</h2>
  <p>If the implementation is a stateless session bean, the deployment tool has a variety of options available to it. In general, the deployment tool generates a servlet to handle parsing the incoming SOAP request; the servlet obtains a reference to an instance of an appropriate EJBObject and dispatches the request to the stateless session EJB. How the request is dispatched to the Service Implementation Bean is dependent on the deployment tool and deploys time binding information supplied by the deployer.</p>
  
  </body>
  </html>
  
  
  1.1                  ws-axis/contrib/ews/docs/dev/client.html
  
  Index: client.html
  ===================================================================
  <html>
  <head>
  <title>Client Implementation of EWS</title>
  <link rel="stylesheet" type="text/css" href="../ews.css">
  </head>
  <body>
  <h1>Client Side Implementation</h1>
  <ol>
  <li>The <a href="service-ref1.xml">Service reference</a> tags in the web.xml or ejb-jar.xml are parsed and the information about the web service is obtained.(This part is loosely implemented with DOM to parse the service reference).<li>
  <li>Using the WSDL file given the tool will generate the stubs to accesses the web service. This is done with Web service Client Stub generator tool with jaxrpcmapping file support which is implemented on the org.apache.geronimo.ews.jaxrpcmapping package. If WSDL does not exists wsdl should be generated from the SEI.<li>
  <li>The WSDL should be published in a registry (This part is not implemented).<li>
  <li>The generated Stubs should be bound to the JNDI name as specified in the service reference. This part is not implemented).</li>
  
  </body>
  </html>