You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@tomee.apache.org by bu...@apache.org on 2012/08/14 03:06:28 UTC

svn commit: r828843 - in /websites/staging/openejb/trunk: cgi-bin/ content/ content/examples-trunk/ content/examples-trunk/jsf-cdi-and-ejb/ content/examples-trunk/jsf-cdi-and-ejb/src/ content/examples-trunk/jsf-cdi-and-ejb/src/main/ content/examples-tr...

Author: buildbot
Date: Tue Aug 14 01:06:27 2012
New Revision: 828843

Log:
Staging update by buildbot for openejb

Added:
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/README.html
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/pom.xml   (with props)
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/Calculator.java
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorBean.java
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorImpl.java
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/beans.xml   (with props)
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/faces-config.xml   (with props)
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/web.xml   (with props)
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/calculator.xhtml   (with props)
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/index.jsp
    websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/result.xhtml   (with props)
Modified:
    websites/staging/openejb/trunk/cgi-bin/   (props changed)
    websites/staging/openejb/trunk/content/   (props changed)
    websites/staging/openejb/trunk/content/examples-trunk/pom.xml

Propchange: websites/staging/openejb/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Aug 14 01:06:27 2012
@@ -1 +1 @@
-1372666
+1372693

Propchange: websites/staging/openejb/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Aug 14 01:06:27 2012
@@ -1 +1 @@
-1372666
+1372693

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/README.html
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/README.html (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/README.html Tue Aug 14 01:06:27 2012
@@ -0,0 +1,480 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>JSF</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- 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="./../../bootstrap.css" rel="stylesheet">
+    <link href="./../../prettify.css" rel="stylesheet">
+    <link href="./../../bootstrap-mods.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=JSF",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../../images/favicon.ico">
+    <link rel="apple-touch-icon" href="./../../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../../images/apple-touch-icon-114x114.png">
+
+    <script src="./../../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../../javascript/jquery-latest.js"></script>
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../../javascript/common.js"></script>
+    <script src="./../../javascript/prettyprint.js"></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">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../../index.html">Apache TomEE</a>
+          <ul class="nav">
+            <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="./../../support.html">Support</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 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="row">
+    <div class="span8">
+        <small><a href="./../../index.html">Home</a>&nbsp;&raquo&nbsp;<a href="./../../examples-trunk/">Examples Trunk</a>&nbsp;&raquo&nbsp;<a href="./../../examples-trunk/jsf-cdi-and-ejb/">Jsf Cdi And Ejb</a></small><br>
+    </div>
+    <div class="span8">
+    </div>
+</div>
+&nbsp;
+<div class="page-header">
+<h1>JSF
+
+    <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 data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
+    </div>
+</h1>
+</div>
+
+<p>A simple web-app showing how to use dependency injection in JSF managed beans using TomEE.</p>
+
+<p>It contains a Local Stateless session bean (CalculatorImpl) which adds two numbers and returns the result.</p>
+
+<p>The application also contains a CDI managed bean (CalculatorBean), which uses the EJB to add two numbers
+and display the results to the user. The EJB is injected in the managed bean using @EJB annotation.</p>
+
+<p>You could run this in the latest Apache TomEE <a href="https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/">snapshot</a></p>
+
+<p>The complete source code is below but lets break down to look at some smaller snippets and see  how it works.</p>
+
+<p>A little note on the setup:</p>
+
+<p>As for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the
+war. In maven terms, they would be with scope 'provided'</p>
+
+<p>Also note that we use servlet 2.5 declaration in web.xml
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  version="2.5"></p>
+
+<p>And we use 2.0 version of faces-config</p>
+
+<p><faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+               version="2.0"></p>
+
+<p>To make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF</p>
+
+<pre><code>   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+   &lt;beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+     http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"&gt;
+   &lt;/beans&gt;
+</code></pre>
+
+<p>We'll first declare the FacesServlet in the web.xml</p>
+
+<pre><code>  &lt;servlet&gt;
+    &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+  &lt;/servlet&gt;
+</code></pre>
+
+<p>FacesServlet acts as the master controller.</p>
+
+<p>We'll then create the calculator.xhtml file.</p>
+
+<pre><code>       &lt;h:outputText value='Enter first number'/&gt;
+       &lt;h:inputText value='#{calculatorBean.x}'/&gt;
+       &lt;h:outputText value='Enter second number'/&gt;
+       &lt;h:inputText value='#{calculatorBean.y}'/&gt;
+       &lt;h:commandButton action="#{calculatorBean.add}" value="Add"/&gt;
+</code></pre>
+
+<p>Notice how we've used the bean here. By default, the bean name would be the simple name of the bean
+class with the first letter in lower case.</p>
+
+<p>We've annotated the <code>CalculatorBean</code> with <code>@RequestScoped</code>.
+So when a request comes in, the bean is instantiated and placed in the request scope.</p>
+
+<p><h:inputText value='#{calculatorBean.x}'/></p>
+
+<p>Here, getX() method of calculatorBean is invoked and the resulting value is displayed.
+x being a Double, we rightly should see 0.0 displayed.</p>
+
+<p>When you change the value and submit the form, these entered values are bound using the setters
+in the bean and then the commandButton-action method is invoked.</p>
+
+<p>In this case, CalculatorBean#add() is invoked.</p>
+
+<p>Calculator#add() delegates the work to the ejb, gets the result, stores it
+and then instructs what view is to be rendered.</p>
+
+<p>You're right. The return value "success" is checked up in faces-config navigation-rules
+and the respective page is rendered.</p>
+
+<p>In our case, 'result.xhtml' page is rendered.</p>
+
+<p>The request scoped 'calculatorBean' is available here, and we use EL to display the values.</p>
+
+<h1>Source Code</h1>
+
+<h2>Calculator</h2>
+
+<pre><code>package org.superbiz.jsf;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface Calculator {
+    public double add(double x, double y);
+}
+</code></pre>
+
+<h2>CalculatorBean</h2>
+
+<pre><code>import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+
+@RequestScoped
+@Named
+public class CalculatorBean {
+    @EJB
+    Calculator calculator;
+    private double x;
+    private double y;
+    private double result;
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getResult() {
+        return result;
+    }
+
+    public void setResult(double result) {
+        this.result = result;
+    }
+
+    public String add() {
+        result = calculator.add(x, y);
+        return "success";
+    }
+}
+</code></pre>
+
+<h2>CalculatorImpl</h2>
+
+<pre><code>package org.superbiz.jsf;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class CalculatorImpl implements Calculator {
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+}
+</code></pre>
+
+<h1>web.xml</h1>
+
+<?xml version="1.0"?>
+
+<p><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         version="2.5"></p>
+
+<p><description>MyProject web.xml</description></p>
+
+<p><!-- Faces Servlet -->
+  <servlet>
+    <servlet-name>Faces Servlet</servlet-name>
+    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    <load-on-startup>1</load-on-startup>
+  </servlet></p>
+
+<p><!-- Faces Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>Faces Servlet</servlet-name>
+    <url-pattern>*.jsf</url-pattern>
+  </servlet-mapping></p>
+
+<p><!-- Welcome files -->
+  <welcome-file-list>
+    <welcome-file>index.jsp</welcome-file>
+    <welcome-file>index.html</welcome-file>
+  </welcome-file-list></p>
+
+<p></web-app></p>
+
+<h1>Calculator.xhtml</h1>
+
+<p><?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"></p>
+
+<p><h:body bgcolor="white">
+    <f:view>
+        <h:form>
+            <h:panelGrid columns="2">
+                <h:outputText value='Enter first number'/>
+                <h:inputText value='#{calculatorBean.x}'/>
+                <h:outputText value='Enter second number'/>
+                <h:inputText value='#{calculatorBean.y}'/>
+                <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+            </h:panelGrid>
+        </h:form>
+    </f:view>
+</h:body>
+</html></p>
+
+<p>#Result.xhtml</p>
+
+<p><?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:h="http://java.sun.com/jsf/html"></p>
+
+<p><h:body>
+<f:view>
+    <h:form id="mainForm">
+        <h2><h:outputText value="Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }"/></h2>
+        <h:commandLink action="back">
+            <h:outputText value="Home"/>
+        </h:commandLink>
+    </h:form>
+</f:view>
+</h:body>
+</html></p>
+
+<p>#faces-config.xml</p>
+
+<p><?xml version="1.0"?>
+ <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+       http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
+               version="2.0"></p>
+
+<p><navigation-rule>
+     <from-view-id>/calculator.xhtml</from-view-id>
+     <navigation-case>
+       <from-outcome>success</from-outcome>
+       <to-view-id>/result.xhtml</to-view-id>
+     </navigation-case>
+   </navigation-rule></p>
+
+<p><navigation-rule>
+     <from-view-id>/result.xhtml</from-view-id>
+     <navigation-case>
+       <from-outcome>back</from-outcome>
+       <to-view-id>/calculator.xhtml</to-view-id>
+     </navigation-case>
+   </navigation-rule>
+ </faces-config></p>
+
+
+<div class="page-header">&nbsp;</div>
+<h4>APIs Used</h4>
+<ul><li><a href="http://docs.oracle.com/javaee/6/api/javax/ejb/EJB.html">javax.ejb.EJB</a></li>
+<li><a href="http://docs.oracle.com/javaee/6/api/javax/ejb/Remote.html">javax.ejb.Remote</a></li>
+<li><a href="http://docs.oracle.com/javaee/6/api/javax/ejb/Stateless.html">javax.ejb.Stateless</a></li>
+<li><a href="http://docs.oracle.com/javaee/6/api/javax/enterprise/context/RequestScoped.html">javax.enterprise.context.RequestScoped</a></li>
+<li><a href="http://docs.oracle.com/javaee/6/api/javax/inject/Named.html">javax.inject.Named</a></li>
+</ul>
+
+<h3>Source</h3>
+  <ul>
+      <li>Apache <a href="http://svn.apache.org/repos/asf/openejb/trunk/openejb/examples/jsf-cdi-and-ejb">jsf-cdi-and-ejb</a></li>
+      <li>Github <a href="https://github.com/apache/openejb/tree/trunk/openejb/examples/jsf-cdi-and-ejb">jsf-cdi-and-ejb</a></li>
+  </ul>
+<pre>
+svn co http://svn.apache.org/repos/asf/openejb/trunk/openejb/examples/jsf-cdi-and-ejb
+cd jsf-cdi-and-ejb
+mvn clean install
+</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 documention!</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="./../../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2011 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/pom.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/Calculator.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/Calculator.java (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/Calculator.java Tue Aug 14 01:06:27 2012
@@ -0,0 +1,25 @@
+/**
+ *
+ * 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.
+ */
+package org.superbiz.jsf;
+
+import javax.ejb.Remote;
+
+@Remote
+public interface Calculator {
+    public double add(double x, double y);
+}

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorBean.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorBean.java (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorBean.java Tue Aug 14 01:06:27 2012
@@ -0,0 +1,62 @@
+/*
+ * 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.
+*/
+package org.superbiz.jsf;
+
+import javax.ejb.EJB;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+
+@RequestScoped
+@Named
+public class CalculatorBean {
+    @EJB
+    Calculator calculator;
+    private double x;
+    private double y;
+    private double result;
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getResult() {
+        return result;
+    }
+
+    public void setResult(double result) {
+        this.result = result;
+    }
+
+    public String add() {
+        result = calculator.add(x, y);
+        return "success";
+    }
+}
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorImpl.java
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorImpl.java (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/java/org/superbiz/jsf/CalculatorImpl.java Tue Aug 14 01:06:27 2012
@@ -0,0 +1,30 @@
+/**
+ *
+ * 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.
+ */
+package org.superbiz.jsf;
+
+import javax.ejb.Stateless;
+
+
+@Stateless
+public class CalculatorImpl implements Calculator {
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+
+}

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/beans.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/beans.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/faces-config.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/faces-config.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/web.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/calculator.xhtml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/calculator.xhtml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/index.jsp
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/index.jsp (added)
+++ websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/index.jsp Tue Aug 14 01:06:27 2012
@@ -0,0 +1,22 @@
+<!--
+* 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.
+-->
+<%@ page session="false" %>
+<%
+    response.sendRedirect("calculator.jsf");
+%>
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/result.xhtml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/openejb/trunk/content/examples-trunk/jsf-cdi-and-ejb/src/main/webapp/result.xhtml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Modified: websites/staging/openejb/trunk/content/examples-trunk/pom.xml
==============================================================================
--- websites/staging/openejb/trunk/content/examples-trunk/pom.xml (original)
+++ websites/staging/openejb/trunk/content/examples-trunk/pom.xml Tue Aug 14 01:06:27 2012
@@ -17,7 +17,7 @@
     limitations under the License.
 -->
 <!--test 2-->
-<!-- $Rev: 1371028 $ $Date: 2012-08-09 02:26:03 +0000 (Thu, 09 Aug 2012) $ -->
+<!-- $Rev: 1372693 $ $Date: 2012-08-14 01:06:05 +0000 (Tue, 14 Aug 2012) $ -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <parent>
@@ -78,6 +78,7 @@
     <module>jpa-hibernate</module>
     <module>jpa-enumerated</module>
     <module>jsf-managedBean-and-ejb</module>
+	<module>jsf-cdi-and-ejb</module>
     <module>lookup-of-ejbs</module>
     <module>lookup-of-ejbs-with-descriptor</module>
     <module>mbean-auto-registration</module>