<!DOCTYPE html>
<html lang="en">
  <head>

    <meta charset="UTF-8">
      <title>Simple Stateful Example</title>
    <meta name="description" content="Apache TomEE">
    <meta name="author" content="Apache TomEE">
    <meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="./resources/css/bootstrap.css" rel="stylesheet">
    <link href="./resources/css/prettify.css" rel="stylesheet">
    <!--link href="./resources/css/bootstrap-mods.css" rel="stylesheet"-->
    <link href="./resources/css/main.css" rel="stylesheet">
    <link href="./resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">

    <script type="text/javascript">
        var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
        var u = encodeURIComponent(""+document.URL);
    
      function fbshare () {
          window.open(
                  "http://www.facebook.com/sharer/sharer.php?u="+u,
                  'Share on Facebook',
                  'width=640,height=426');
      };
      function gpshare () {
          window.open(
                  "https://plus.google.com/share?url="+u,
                  'Share on Google+',
                  'width=584,height=385');
      };
      function twshare () {
          window.open(
                  "https://twitter.com/intent/tweet?url="+u+"&text="+t,
                  'Share on Twitter',
                  'width=800,height=526');
      };
      function pinshare () {
          window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
                  'Share on Pinterest',
                  'width=800,height=526');
      };
    </script>

    <!-- Le fav and touch icons -->
    <link rel="shortcut icon" href="./favicon.ico">
    <link rel="apple-touch-icon" href="./resources/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="./resources/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="./resources/images/apple-touch-icon-114x114.png">

    <script src="./resources/js/prettify.js" type="text/javascript"></script>
    <script src="./resources/js/jquery-latest.js"></script>
    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
    <script src="./resources/js/common.js"></script>
    <script src="./resources/js/prettyprint.js"></script>
    <!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
    
    <script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
  </head>

  <body>

    <div class="topbar" data-dropdown="dropdown">
      <div class="fill">
        <div class="container">
          <a class="brand" href="./index.html">Apache TomEE</a>
          <ul class="nav">
              <li class="dropdown">
                  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                  Apache
                      <b class="caret"></b>
                  </a>
                  <ul class="dropdown-menu">
                     <!-- <li><a href="./misc/whoweare.html">Who we are?</a></li> -->
                     <!-- <li><a href="./misc/heritage.html">Heritage</a></li> -->
                     <li><a href="http://www.apache.org">Apache Home</a></li>
                     <!-- <li><a href="./misc/resources.html">Resources</a></li> -->
                     <li><a href="./misc/contact.html">Contact</a></li>
                     <li><a href="./misc/legal.html">Legal</a></li>
                     <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                     <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                     <li class="divider"/>
                     <li><a href="http://www.apache.org/security">Security</a></li>
                  </ul>
              </li>
              <li><a href="./index.html">Home</a></li>
              <li><a href="./downloads.html">Downloads</a></li>
              <li><a href="./documentation.html">Documentation</a></li>
              <li><a href="./examples-trunk/index.html">Examples</a></li>
              <li><a href="./support.html">Support</a></li>
              <li><a href="./contribute.html">Contribute</a></li>
              <li><a href="./security/index.html">Security</a></li>
          </ul>

            <!-- Google CSE Search Box Begins  -->
            <FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
                <INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
                <INPUT type="hidden" name="cof" value="FORID:0">
                <INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
            </FORM>
            <!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
            <!-- Google CSE Search Box Ends -->
        </div>
      </div>
    </div>

    <div class="container">
    

<div class="page-header">
    <small><a href="./index.html">Home</a></small><br>
    <h1>Simple Stateful Example

        <div style="float: right; position: relative; bottom: -10px; ">
            <a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
            <a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
            <a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
            <a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
            <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
        </div>
    </h1>
</div>

<p><a name="SimpleStatefulExample-Overview"></a></p>

<h1>Overview</h1>

<p><div class="span">:style=float: right; margin-left: 20px;}<div class="html">}</p>

<p><object width="400" height="250"><param name="movie"
value="http://www.youtube.com/v/9JqxbfzsWOQ?fs=1&amp;hl=en_US&amp;rel=0"></param><param
name="allowFullScreen" value="true"></param><param name="allowscriptaccess"
value="always"></param><embed
src="http://www.youtube.com/v/9JqxbfzsWOQ?fs=1&amp;hl=en_US&amp;rel=0"
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="400" height="250"></embed></object>
<div class="html">}<div class="span">}<div class="div">}</p>

<p>This example shows how to create a Stateful session EJB using annotations.</p>

<p>A Stateful session bean is a session bean whose instances can maintain the
conversational state with the client.  The conversational state of the
stateful session bean, which describes the conversation between a specific
client and a session bean, is contained in the fields of the stateful
session bean.</p>

<p>Simply put, when you create a stateful bean an actual instance is created
by the container and <em>dedicated</em> to you and only you.  Every call you make
will go to your instance.  Further, your instance will not be shared with
anyone unless you give them a reference to your stateful bean.  The
instance will last until you remove it or until it times-out and is removed
by the container.</p>

<p>With EJB 3.0, it's now possible to write stateful session bean without
specifying a deployment descriptor; you basically have to write just a
remote or local business interface, which is a plain-old-java-interface,
annotated with the @Remote or @Local annotation the stateful session bean
implementation, a plain-old-java-object which implements the remote or the
local business interface and is annotated with the @Stateful annotation</p>

<p><em>This example is the "simple-stateful" example located in the <a href="openejb:download.html">openejb-examples.zip</a>
 available on the <a href="http://tomee.apache.org/downloads.html">download page</a>.</em></p>

<p><div class="div">}<div class="div">:style=clear:both;}{div}</p>

<p><a name="SimpleStatefulExample-TheCode"></a></p>

<h1>The Code</h1>

<p>In this example we develop a simple counter stateful session EJB.   Every
stateful session bean implementation must be annotated using the annotation
<em>@Stateful</em> or marked that way in the ejb-jar.xml file.</p>

<p><a name="SimpleStatefulExample-Bean"></a></p>

<h2>Bean</h2>

<p><div class="snippet">:id=code|url=openejb3/examples/simple-stateful/src/main/java/org/superbiz/counter/CounterImpl.java|lang=java}</p>

<p>In EJB 3.0 session beans do not need to implement the javax.ejb.SessionBean
interface. You can simply annotate it as @Stateful if you want it to be a
stateful session bean.  </p>

<p>Users of EJB 2.x may notice the bean actually implements the business
interfaces! In the prior version of EJB implementing the remote interface
(which derives from javax.ejb.EJBObject) in your bean was just not allowed.
Now there is no javax.ejb.EJBObject requirement, so implementing the
business interfaces is standard practice for EJB 3.0.</p>

<p><a name="SimpleStatefulExample-Localbusinessinterface"></a></p>

<h2>Local business interface</h2>

<p><div class="snippet">:id=code|url=openejb3/examples/simple-stateful/src/main/java/org/superbiz/counter/CounterLocal.java|lang=java}</p>

<p>Local interfaces in EJB are <em>pass-by-reference</em> interfaces.  Meaning that
<em>normal java semantics</em> are used for passing arguments, return values and
exceptions.  A business local interface can be any plain java interface. 
There are no restrictions on the method arguments, return types, or throws
clauses.  </p>

<p>Unless specified otherwise, every interface your bean implements (and it's
parent class implements and so on) is considered to be a local business
interface.  You can use the <em>@Local</em> annotation to explicitly state that an
interface is a local interface, but this is not required.</p>

<p>You'll notice that in EJB 3.0 the Local Business Interface of a stateless
session bean does not need to extend from javax.ejb.EJBLocalObject and does
not need a javax.ejb.EJBLocalHome interface as they did in EJB 2.x and
prior.  Per the vocabulary of the EJB spec, interfaces that implement
javax.ejb.EJBLocalObject or javax.ejb.EJBLocalHome are considered Component
Interfaces and the plain java interface above is considered a Business
Interface.</p>

<p><a name="SimpleStatefulExample-Remotebusinessinterface"></a></p>

<h2>Remote business interface</h2>

<p><div class="snippet">:id=code|url=openejb3/examples/simple-stateful/src/main/java/org/superbiz/counter/CounterRemote.java|lang=java}</p>

<p>Remote interfaces are <em>pass-by-value</em> interfaces.  Meaning that all method
parameters, return values, and exceptions are <em>serialized</em> on every call. 
The result is that you get a copy of the original object and not the
original object.  The advantage is of course that Remote interfaces can be
used to invoke an EJB across a network in a client-server fashion.  There
are no restrictions on the Remote interface itself, but there are on the
data passed in and out of the remote interface.  The <em>values</em> passed into a
method or returned from a method of a Remote interface <em>must be
serializable</em>.  It is fine for the method signature to be, for example,
"public Object myMethod(Object myParam)" as long as the <em>value</em> passed in
and returned implements <em>java.io.Serializable</em>.</p>

<p>As stated above, the Remote Business Interface of a bean can be any plain
old interface.  It does not need to extend javax.ejb.EJBObject, it does not
need a javax.ejb.EJBHome, the methods do not need to throw
javax.rmi.RemoteException, and the bean class <em>can</em> implement it!</p>

<p>At minimum the interface must be annotated with <em>@Remote</em> either in the
interface itself or in the bean class, or the interface must be declared
via <business-remote> in the ejb-jar.xml.</p>

<p><a name="SimpleStatefulExample-Writingaunittestfortheexample"></a></p>

<h1>Writing a unit test for the example</h1>

<p>Writing an unit test for the stateful session EJB is quite simple. We need
just to write a setup method to create and initialize the InitialContext,
and then write our test methods</p>

<p><a name="SimpleStatefulExample-setUp"></a></p>

<h4>setUp</h4>

<p><div class="snippet">:id=setup|url=openejb3/examples/simple-stateful/src/test/java/org/superbiz/counter/CounterImplTest.java|lang=java}</p>

<p><a name="SimpleStatefulExample-Testthelocalbusinessinterface"></a></p>

<h4>Test the local business interface</h4>

<p><div class="snippet">:id=local|url=openejb3/examples/simple-stateful/src/test/java/org/superbiz/counter/CounterImplTest.java|lang=java}</p>

<p><a name="SimpleStatefulExample-Testtheremotebusinessinterface"></a></p>

<h4>Test the remote business interface</h4>

<p><div class="snippet">:id=remote|url=openejb3/examples/simple-stateful/src/test/java/org/superbiz/counter/CounterImplTest.java|lang=java}
<div class="info">:title=JNDI Names}
Note that JNDI names for Java SE clients are not standardized by the EJB
spec.  This is unfortunate and something being addressed in EJB 3.1.  The
default schema that OpenEJB uses is ejbName + interfaceType (i.e. Local,
Remote, LocalHome, RemoteHome), so in our example "CounterImpl" + "Local"
and "CounterImpl" + "Remote".  You can in fact change this default to be
absolutely <a href="jndi-names.html">anything you want</a>
 including interface class name, ejb class name, and more.<div class="info">}</p>

<p><a name="SimpleStatefulExample-Running"></a></p>

<h1>Running</h1>

<p>Running the example is fairly simple.  In the "simple-stateful" directory
of the <a href="openejb:download.html">examples zip</a>
, just run:</p>

<p>$ mvn clean install</p>

<p>Which should create output like the following.</p>

<pre><code>-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.superbiz.counter.CounterImplTest
Apache OpenEJB 3.0    build: 20080408-04:13
http://tomee.apache.org/
INFO - openejb.home =
</code></pre>

<p>/Users/dblevins/work/openejb-3.0/examples/simple-stateful
    INFO - openejb.base =
/Users/dblevins/work/openejb-3.0/examples/simple-stateful
    INFO - Configuring Service(id=Default Security Service,
type=SecurityService, provider-id=Default Security Service)
    INFO - Configuring Service(id=Default Transaction Manager,
type=TransactionManager, provider-id=Default Transaction Manager)
    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory,
type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
    INFO - Found EjbModule in classpath:
/Users/dblevins/work/openejb-3.0/examples/simple-stateful/target/classes
    INFO - Configuring app:
/Users/dblevins/work/openejb-3.0/examples/simple-stateful/target/classes
    INFO - Configuring Service(id=Default Stateful Container, type=Container,
provider-id=Default Stateful Container)
    INFO - Auto-creating a container for bean CounterImpl:
Container(type=STATEFUL, id=Default Stateful Container)
    INFO - Loaded Module:
/Users/dblevins/work/openejb-3.0/examples/simple-stateful/target/classes
    INFO - Assembling app:
/Users/dblevins/work/openejb-3.0/examples/simple-stateful/target/classes
    INFO - Jndi(name=CounterImplLocal) --> Ejb(deployment-id=CounterImpl)
    INFO - Jndi(name=CounterImplRemote) --> Ejb(deployment-id=CounterImpl)
    INFO - Created Ejb(deployment-id=CounterImpl, ejb-name=CounterImpl,
container=Default Stateful Container)
    INFO - Deployed
Application(path=/Users/dblevins/work/openejb-3.0/examples/simple-stateful/target/classes)
    Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.698 sec</p>

<pre><code>Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
</code></pre>




        <div id="edit" class="modal hide fade in" style="display: none; ">
            <div class="modal-header">
                <a class="close" data-dismiss="modal">x</a>

                <h3>Thank you for contributing to the documentation!</h3>
            </div>
            <div class="modal-body">
                <h4>Any help with the documentation is greatly appreciated.</h4>
                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
                <!--[if gt IE 6]>
                <h4>Internet Explorer Users</h4>
                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
                <![endif]-->

            </div>
            <div class="modal-footer">
                Do you have an Apache ID?
                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
            </div>
        </div>
        <script src="./resources/js/bootstrap-modal.js"></script>

        <footer>
            <p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
                Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
                All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
        </footer>

    </div> <!-- /container -->

    <!-- Javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="./resources/js/bootstrap-dropdown.js"></script>

  </body>
</html>
