Author: dblevins
Date: Wed Feb 14 16:31:58 2007
New Revision: 507754
URL: http://svn.apache.org/viewvc?view=rev&rev=507754
Log:
Patch from Filippo Diotalevi - OPENEJB-357: Example: Using @EJB to refer to
other EJBs
Thanks Filippo!
Added:
incubator/openejb/trunk/openejb3/examples/ejb-injection/README.txt
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderImpl.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderLocal.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderRemote.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreImpl.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreLocal.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreRemote.java
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/test/java/org/apache/openejb/examples/injection/EjbDependencyTest.java
Added: incubator/openejb/trunk/openejb3/examples/ejb-injection/README.txt
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/README.txt?view=auto&rev=507754
==============================================================================
--- incubator/openejb/trunk/openejb3/examples/ejb-injection/README.txt (added)
+++ incubator/openejb/trunk/openejb3/examples/ejb-injection/README.txt Wed Feb
14 16:31:58 2007
@@ -0,0 +1,16 @@
+This example shows how to use the @EJB annotation on a bean class to refer to
other beans.
+
+This functionality is often referred as dependency injection (see
+http://www.martinfowler.com/articles/injection.html), and has been recently
introduced in
+Java EE 5.
+
+In this particular example, we will create two session stateless beans
+
+ * a DataStore session bean
+ * a DataReader session bean
+
+The DataReader bean uses the DataStore to retrieve some informations, and
+we will see how we can, inside the DataReader bean, get a reference to the
+DataStore bean using the @EJB annotation, thus avoiding the use of the
+JNDI API.
+
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderImpl.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderImpl.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderImpl.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderImpl.java
Wed Feb 14 16:31:58 2007
@@ -34,6 +34,7 @@
* this means that the application server, at runtime, will inject in this
instance
* variable a reference to the EJB DataStoreLocal
*/
+//START SNIPPET: code
@Stateless
public class DataReaderImpl implements DataReaderLocal, DataReaderRemote {
@@ -47,4 +48,5 @@
public String readDataFromRemoteStore() {
return "REMOTE:"+dataStoreRemote.getData();
}
-}
\ No newline at end of file
+}
+//END SNIPPET: code
\ No newline at end of file
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderLocal.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderLocal.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderLocal.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderLocal.java
Wed Feb 14 16:31:58 2007
@@ -24,9 +24,11 @@
* annotation, but it's optional. A business interface which is
* not annotated with @Local or @Remote is assumed to be Local
*/
+//START SNIPPET: code
@Local
public interface DataReaderLocal {
public String readDataFromLocalStore();
public String readDataFromRemoteStore();
-}
\ No newline at end of file
+}
+//END SNIPPET: code
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderRemote.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderRemote.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderRemote.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataReaderRemote.java
Wed Feb 14 16:31:58 2007
@@ -29,4 +29,4 @@
public String readDataFromLocalStore();
public String readDataFromRemoteStore();
-}
\ No newline at end of file
+}
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreImpl.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreImpl.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreImpl.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreImpl.java
Wed Feb 14 16:31:58 2007
@@ -26,6 +26,7 @@
* interface, and DataStoreLocal, a local business interface
*
*/
+//START SNIPPET: code
@Stateless
public class DataStoreImpl implements DataStoreLocal, DataStoreRemote{
@@ -33,5 +34,5 @@
return "42";
}
-
-}
\ No newline at end of file
+}
+//END SNIPPET: code
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreLocal.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreLocal.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreLocal.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreLocal.java
Wed Feb 14 16:31:58 2007
@@ -24,10 +24,11 @@
* annotation, but it's optional. A business interface which is
* not annotated with @Local or @Remote is assumed to be Local
*/
+//START SNIPPET: code
@Local
public interface DataStoreLocal {
public String getData();
-
-}
\ No newline at end of file
+}
+//END SNIPPET: code
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreRemote.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreRemote.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreRemote.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/main/java/org/apache/openejb/examples/injection/DataStoreRemote.java
Wed Feb 14 16:31:58 2007
@@ -23,9 +23,11 @@
* A remote business interface must be annotated with the @Remote
* annotation
*/
+//START SNIPPET: code
@Remote
public interface DataStoreRemote {
public String getData();
-}
\ No newline at end of file
+}
+//END SNIPPET: code
Modified:
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/test/java/org/apache/openejb/examples/injection/EjbDependencyTest.java
URL:
http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/examples/ejb-injection/src/test/java/org/apache/openejb/examples/injection/EjbDependencyTest.java?view=diff&rev=507754&r1=507753&r2=507754
==============================================================================
---
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/test/java/org/apache/openejb/examples/injection/EjbDependencyTest.java
(original)
+++
incubator/openejb/trunk/openejb3/examples/ejb-injection/src/test/java/org/apache/openejb/examples/injection/EjbDependencyTest.java
Wed Feb 14 16:31:58 2007
@@ -32,6 +32,7 @@
private static final String REMOTE_STORE_RESULT = "REMOTE:42";
private static final String LOCAL_STORE_RESULT = "LOCAL:42";
+ //START SNIPPET: setup
private InitialContext initialContext;
protected void setUp() throws Exception {
@@ -41,7 +42,9 @@
initialContext = new InitialContext(properties);
}
+ //END SNIPPET: setup
+ //START SNIPPET: test
public void testViaLocalInterface() throws Exception {
Object object = initialContext.lookup("DataReaderImplBusinessLocal");
@@ -49,6 +52,7 @@
assertEquals(LOCAL_STORE_RESULT,
((DataReaderLocal)object).readDataFromLocalStore());
assertEquals(REMOTE_STORE_RESULT,
((DataReaderLocal)object).readDataFromRemoteStore());
}
+ //END SNIPPET: test
public void testViaRemoteInterface() throws Exception {
Object object = initialContext.lookup("DataReaderImplBusinessRemote");