| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
| <!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jun 28, 2015 -->
|
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
| <head>
|
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
| <title>Apache Axis2 - |
| |
| |
| Guide to using EJB Provider for Axis2</title>
|
| <style type="text/css" media="all">
|
| @import url("../css/maven-base.css");
|
| @import url("../css/maven-theme.css");
|
| @import url("../css/site.css");
|
| </style>
|
| <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
|
| <meta name="Date-Revision-yyyymmdd" content="20150628" />
|
| <meta http-equiv="Content-Language" content="en" />
|
| <meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="text/html; charset=us-ascii" /><meta name="generator" content="amaya 9.2.1, see http://www.w3.org/Amaya/" />
|
| </head>
|
| <body class="composite">
|
| <div id="banner">
|
| <a href="http://www.apache.org/" id="bannerLeft">
|
| <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
|
| </a>
|
| <a href=".././" id="bannerRight">
|
| <img src="../images/axis.jpg" alt="Apache Axis2" />
|
| </a>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| </div>
|
| <div id="breadcrumbs">
|
|
|
|
|
| <div class="xleft">
|
| <span id="publishDate">Last Published: 2015-06-28</span>
|
| | <span id="projectVersion">Version: 1.6.3</span>
|
| </div>
|
| <div class="xright"> <a href="../index.html" title="Axis2/Java">Axis2/Java</a>
|
| |
|
| <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
|
|
|
|
|
| </div>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| </div>
|
| <div id="leftColumn">
|
| <div id="navcolumn">
|
|
|
|
|
| <h5>Axis2/Java</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../index.html" title="Home">Home</a>
|
| </li>
|
| </ul>
|
| <h5>Downloads</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../download.cgi" title="Releases">Releases</a>
|
| </li>
|
| <li class="none">
|
| <a href="../modules/index.html" title="Modules">Modules</a>
|
| </li>
|
| <li class="none">
|
| <a href="../tools/index.html" title="Tools">Tools</a>
|
| </li>
|
| </ul>
|
| <h5>Documentation</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../docs/toc.html" title="Table of Contents">Table of Contents</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/userguide.html" title="User Guide">User Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/spring.html" title="Spring Guide">Spring Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
|
| </li>
|
| <li class="none">
|
| <a href="../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
|
| </li>
|
| </ul>
|
| <h5>Resources</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../faq.html" title="FAQ">FAQ</a>
|
| </li>
|
| <li class="none">
|
| <a href="../articles.html" title="Articles">Articles</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
|
| </li>
|
| <li class="none">
|
| <a href="../refLib.html" title="Reference Library">Reference Library</a>
|
| </li>
|
| <li class="none">
|
| <a href="../api/index.html" title="Online Java Docs">Online Java Docs</a>
|
| </li>
|
| </ul>
|
| <h5>Get Involved</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../overview.html" title="Overview">Overview</a>
|
| </li>
|
| <li class="none">
|
| <a href="../svn.html" title="Checkout the Source">Checkout the Source</a>
|
| </li>
|
| <li class="none">
|
| <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
|
| </li>
|
| <li class="none">
|
| <a href="../release-process.html" title="Release Process">Release Process</a>
|
| </li>
|
| <li class="none">
|
| <a href="../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
|
| </li>
|
| <li class="none">
|
| <a href="../siteHowTo.html" title="Build the Site">Build the Site</a>
|
| </li>
|
| </ul>
|
| <h5>Project Information</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../team-list.html" title="Project Team">Project Team</a>
|
| </li>
|
| <li class="none">
|
| <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
|
| </li>
|
| <li class="none">
|
| <a href="../thanks.html" title="Acknowledgements">Acknowledgements</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
|
| </li>
|
| </ul>
|
| <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
|
| <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
|
| </a>
|
|
|
|
|
| </div>
|
| </div>
|
| <div id="bodyColumn">
|
| <div id="contentBox">
|
| <!-- ~ Licensed to the Apache Software Foundation (ASF) under one |
| ~ or more contributor license agreements. See the NOTICE file |
| ~ distributed with this work for additional information |
| ~ regarding copyright ownership. The ASF licenses this file |
| ~ to you under the Apache License, Version 2.0 (the |
| ~ "License"); you may not use this file except in compliance |
| ~ with the License. You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, |
| ~ software distributed under the License is distributed on an |
| ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~ KIND, either express or implied. See the License for the |
| ~ specific language governing permissions and limitations |
| ~ under the License. --><html xmlns="http://www.w3.org/1999/xhtml"> |
| |
| <h1>Guide to using EJB Provider for Axis2</h1> |
| <p>The EJB message receiver allows one to access stateless session |
| EJBs (Enterprise JavaBeans) through Web services. The example used |
| in this guide illustrates how to use the EJB provider that ships |
| with Axis2 to access EJBs deployed on a J2EE server such as |
| Geronimo or JBoss.</p> |
| <p>This example explains how to use Geronimo 1.1 and JBoss 4.0.4.GA |
| as application server.</p> |
| <p>The following steps will take you through the example through |
| which we will explain how to use an EJB provider in Axis2</p> |
| <div class="section"><h2>1. Creating a Simple Stateless Session EJB<a name="a1._Creating_a_Simple_Stateless_Session_EJB"></a></h2> |
| <p>First we need to create a stateless session EJB. Use the |
| following files to make an EJB for testing:</p> |
| <div><pre> |
| Remote interface (Hello.java) |
| package my.ejb; |
| import javax.ejb.EJBObject; |
| |
| public interface Hello extends EJBObject, HelloBusiness { |
| } |
| </pre></div> |
| <p>The following interface defines the business methods available |
| in</p> |
| <p><tt>1.</tt>HelloBusiness.java</p> |
| <div><pre> |
| package my.ejb; |
| import java.rmi.RemoteException; |
| |
| public interface HelloBusiness { |
| public String sayHello(String name) throws RemoteException; |
| } |
| </pre></div> |
| <p>2, Remote home interface - HelloHome.java</p> |
| <div><pre> |
| package my.ejb; |
| import javax.ejb.EJBHome; |
| import javax.ejb.CreateException; |
| import java.rmi.RemoteException; |
| |
| public interface HelloHome extends EJBHome { |
| public Hello create() throws CreateException, RemoteException; |
| } |
| </pre></div> |
| <p>3. Bean class - HelloBean.java</p> |
| <div><pre> |
| package my.ejb; |
| import javax.ejb.SessionBean; |
| import javax.ejb.SessionContext; |
| import javax.ejb.EJBException; |
| import javax.ejb.CreateException; |
| |
| public class HelloBean implements SessionBean { |
| public void setSessionContext(SessionContext sessionContext) throws |
| EJBException {} |
| |
| public void ejbRemove() throws EJBException {} |
| public void ejbActivate() throws EJBException {} |
| public void ejbPassivate() throws EJBException {} |
| public void ejbCreate() throws CreateException {} |
| |
| public String sayHello(String name) { |
| return "Hello " + name + ", Have a nice day!"; |
| } |
| |
| } |
| </pre></div> |
| <p>4. Deployment descriptor - ejb-jar.xml</p> |
| <div><pre> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee |
| http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" |
| version="2.1"> |
| |
| <enterprise-beans> |
| <session> |
| <ejb-name>Hello</ejb-name> |
| <home>my.ejb.HelloHome</home> |
| <remote>my.ejb.Hello</remote> |
| <ejb-class>my.ejb.HelloBean</ejb-class> |
| <session-type>Stateless</session-type> |
| <transaction-type>Bean</transaction-type> |
| </session> |
| </enterprise-beans> |
| <assembly-descriptor> |
| <container-transaction> |
| <method> |
| <ejb-name>Hello</ejb-name> |
| <method-name>*</method-name> |
| </method> |
| <trans-attribute>Required</trans-attribute> |
| </container-transaction> |
| </assembly-descriptor> |
| </ejb-jar> |
| </pre></div> |
| <p>Now we have to write application server specific deployment |
| descriptor(s) for the Hello EJB. The following listing shows an |
| example Geronimo/OpenEJB deployment descriptor |
| (openejb-jar.xml)</p> |
| <div><pre> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <openejb-jar |
| xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1" |
| xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1" |
| xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1" |
| xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1" |
| xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"> |
| <enterprise-beans> |
| <session> |
| <ejb-name>Hello</ejb-name> |
| <jndi-name>my/ejb/HelloBean</jndi-name> |
| </session> |
| </enterprise-beans> |
| </openejb-jar> |
| </pre></div> |
| <p>If you want to test on JBoss, use the following JBoss deployment |
| descriptor (jboss.xml)</p> |
| <div><pre> |
| <?xml version="1.0"?> |
| <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" |
| "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd"> |
| <jboss> |
| <enterprise-beans> |
| <session> |
| <ejb-name>Hello</ejb-name> |
| <jndi-name>my/ejb/HelloBean</jndi-name> |
| </session> |
| </enterprise-beans> |
| </jboss> |
| </pre></div> |
| <p>Compile the above java classes and bundle the compiled classes |
| and the XML files into a jar file (HelloEJB.jar) as shown |
| below.</p> |
| <div><pre> |
| |
| HelloEJB.jar |
| | |
| +--META-INF |
| | +--ejb-jar.xml |
| | +--jboss.xml [If you want to deploy on Jboss] |
| | +--openejb-jar.xml [If you want to deploy on Geronimo/Openejb] |
| | |
| +--my |
| +--ejb |
| | |
| +--Hello.class |
| +--HelloBean.class |
| +--HelloBusiness.class |
| +--HelloHome.class |
| |
| </pre></div> |
| <p>Next, deploy the HelloEJB.jar file onto the appropriate J2EE |
| application server.</p> |
| <div class="section"><h2>Creating the Axis2 Service Archive<a name="Creating_the_Axis2_Service_Archive"></a></h2> |
| <p>Now we need to make the services.xml file.</p> |
| <div><pre> |
| <serviceGroup> |
| <service name="HelloBeanService"> |
| <description>Hello! web service</description> |
| <messageReceivers> |
| <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" |
| class="org.apache.axis2.rpc.receivers.ejb.EJBInOnlyMessageReceiver"/> |
| <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" |
| class="org.apache.axis2.rpc.receivers.ejb.EJBMessageReceiver"/> |
| </messageReceivers> |
| <parameter name="ServiceClass">my.ejb.HelloBusiness</parameter> |
| <parameter name="remoteInterfaceName">my.ejb.Hello</parameter> |
| <parameter name="homeInterfaceName">my.ejb.HelloHome</parameter> |
| <parameter name="beanJndiName">my/ejb/HelloBean</parameter> |
| <parameter name="providerUrl">[URL]</parameter> |
| <parameter name="jndiContextClass">[Context Factory Class |
| Name]</parameter> |
| </service> |
| </serviceGroup> |
| </pre></div> |
| <p>In the above services.xml file, replace the [URL] and [Context |
| Factory Class Name] with valid values as follows:</p> |
| <p><b>i.e. If the EJB is deployed on Geronimo:</b></p> |
| <p>Replace [URL] by 127.0.0.1:4201</p> |
| <p>Replace [Context Factory Class Name] by |
| org.openejb.client.JNDIContext</p> |
| <p><b>For Jboss:</b></p> |
| <p>Replace [URL] by jnp://localhost:1099</p> |
| <p>Replace [Context Factory Class Name] by |
| org.jnp.interfaces.NamingContextFactory</p> |
| <p>Bundle the HelloBeanService.wsdl, services.xml, remote interface |
| class and home interface class as illustrated below:</p> |
| <div><pre> |
| |
| HelloBeanService.aar |
| | |
| +--META-INF |
| | +--services.xml |
| | |
| +--lib |
| | +--[jars used by the ejb client eg.initial context factory classes] |
| | |
| +--my |
| +--ejb |
| +--Hello.class |
| +--HelloBusiness.class |
| +--HelloHome.class |
| |
| </pre></div> |
| <p>The lib directory of HelloBeanService.aar must contain all the |
| libraries needed to access the EJB. If the EJB is deployed on |
| <b>Geronimo</b>, add the following jar files to the lib |
| directory.</p> |
| <ul> |
| <li>cglib-nodep-2.1_3.jar</li> |
| <li>geronimo-ejb_2.1_spec-1.0.1.jar</li> |
| <li>geronimo-j2ee-jacc_1.0_spec-1.0.1.jar</li> |
| <li>geronimo-kernel-1.1.jar</li> |
| <li>geronimo-security-1.1.jar</li> |
| <li>openejb-core-2.1.jar</li> |
| </ul> |
| <p>For <b>JBoss</b> add the following jar files.</p> |
| <ul> |
| <li>jnp-client.jar</li> |
| <li>jboss-client.jar</li> |
| <li>jboss-common-client.jar</li> |
| <li>jboss-remoting.jar</li> |
| <li>jboss-serialization.jar</li> |
| <li>jboss-transaction-client.jar</li> |
| <li>concurrent.jar</li> |
| <li>jbosssx-client.jar</li> |
| <li>jboss-j2ee.jar</li> |
| </ul> |
| <p>Deploy HelloBeanService.aar on an Axis2 server.</p> |
| <p>Now you can access the Hello EJB through Web services. Since our |
| EJB message receivers extend RPC message receivers, |
| org.apache.axis2.rpc.client.RPCServiceClient can be used to invoke |
| the service as illustrated in the following code fragment.</p> |
| <div><pre> |
| ... |
| |
| RPCServiceClient serviceClient = new RPCServiceClient(); |
| Options options = serviceClient.getOptions(); |
| |
| EndpointReference targetEPR = new |
| EndpointReference("http://localhost:8080/axis2/services/HelloBeanService"); |
| |
| options.setTo(targetEPR); |
| QName hello = new QName("http://ejb.my/xsd", "sayHello"); |
| Object[] helloArgs = new Object[] {"John"}; |
| |
| System.out.println(serviceClient.invokeBlocking(hello, |
| helloArgs).getFirstElement().getText()); |
| |
| ... |
| </pre></div> |
| |
| </html>
|
| </div>
|
| </div>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| <div id="footer">
|
| <div class="xright">
|
| Copyright © 2004-2015
|
| <a href="http://www.apache.org/">The Apache Software Foundation</a>.
|
| All Rights Reserved.
|
|
|
| </div>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| </div>
|
| </body>
|
| </html>
|