Author: dblevins
Date: Mon Apr 11 09:54:11 2011
New Revision: 1090996
URL: http://svn.apache.org/viewvc?rev=1090996&view=rev
Log:
OPENEJB-1519: Update existing examples to EJB 3.1
Added:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/
- copied from r1088039,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdb/
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/ChatBean.java
- copied, changed from r1090810,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdb/ChatBean.java
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/
- copied from r1088039,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdb/
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/ChatBeanTest.java
- copied, changed from r1090810,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdb/ChatBeanTest.java
Removed:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/MessagingClientBean.java
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/MessagingClientLocal.java
Modified:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/resources/META-INF/ejb-jar.xml
Copied:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/ChatBean.java
(from r1090810,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdb/ChatBean.java)
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/ChatBean.java?p2=openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/ChatBean.java&p1=openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdb/ChatBean.java&r1=1090810&r2=1090996&rev=1090996&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdb/ChatBean.java
(original)
+++
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/java/org/superbiz/mdbdesc/ChatBean.java
Mon Apr 11 09:54:11 2011
@@ -15,7 +15,7 @@
* limitations under the License.
*/
//START SNIPPET: code
-package org.superbiz.mdb;
+package org.superbiz.mdbdesc;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
@@ -27,26 +27,34 @@ import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
public class ChatBean implements MessageListener {
+ private ConnectionFactory connectionFactory;
+
+ private Queue answerQueue;
public void onMessage(Message message) {
try {
- TextMessage textMessage = (TextMessage) message;
- String question = textMessage.getText();
- if (question.equals("Hello World!")) {
+ final TextMessage textMessage = (TextMessage) message;
+ final String question = textMessage.getText();
+
+ if ("Hello World!".equals(question)) {
+
respond("Hello, Test Case!");
- } else if (question.equals("How are you?")) {
+
+ } else if ("How are you?".equals(question)) {
+
respond("I'm doing well.");
- } else if (question.equals("Still spinning?")) {
+
+ } else if ("Still spinning?".equals(question)) {
+
respond("Once every day, as usual.");
+
}
} catch (JMSException e) {
- e.printStackTrace();
+ throw new IllegalStateException(e);
}
}
@@ -56,8 +64,6 @@ public class ChatBean implements Message
Session session = null;
try {
- InitialContext context = new InitialContext();
- ConnectionFactory connectionFactory = (ConnectionFactory)
context.lookup("java:comp/env/ConnectionFactory");
connection = connectionFactory.createConnection();
connection.start();
@@ -65,7 +71,6 @@ public class ChatBean implements Message
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// Create a MessageProducer from the Session to the Topic or Queue
- Queue answerQueue = (Queue)
context.lookup("java:comp/env/AnswerQueue");
MessageProducer producer = session.createProducer(answerQueue);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
@@ -74,8 +79,6 @@ public class ChatBean implements Message
// Tell the producer to send the message
producer.send(message);
- } catch (NamingException e) {
- e.printStackTrace();
} finally {
// Clean up
if (session != null) session.close();
Modified:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/resources/META-INF/ejb-jar.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/resources/META-INF/ejb-jar.xml?rev=1090996&r1=1090995&r2=1090996&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/resources/META-INF/ejb-jar.xml
(original)
+++
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/main/resources/META-INF/ejb-jar.xml
Mon Apr 11 09:54:11 2011
@@ -16,68 +16,49 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<ejb-jar 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/ejb-jar_3_0.xsd"
- version="3.0">
+
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee">
<enterprise-beans>
- <!-- Configure the message driven bean that will listen to the ChatBean
queue -->
+
<message-driven>
+
<ejb-name>ChatBean</ejb-name>
- <ejb-class>org.superbiz.mdb.ChatBean</ejb-class>
+ <ejb-class>org.superbiz.mdbdesc.ChatBean</ejb-class>
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type>
- <message-destination-link>ChatBean</message-destination-link>
- <!-- Allow the connection factory to be looked up via
java:comp/env/ConnectionFactory -->
- <resource-ref>
- <res-ref-name>ConnectionFactory</res-ref-name>
- <res-type>javax.jms.ConnectionFactory</res-type>
- </resource-ref>
+ <activation-config>
+ <activation-config-property>
+
<activation-config-property-name>destination</activation-config-property-name>
+
<activation-config-property-value>ChatBean</activation-config-property-value>
+ </activation-config-property>
+ <activation-config-property>
+
<activation-config-property-name>destinationType</activation-config-property-name>
+
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
+ </activation-config-property>
+ </activation-config>
- <!-- Allow the reply queue to looked up via java:comp/env/AnswerQueue -->
<resource-ref>
- <res-ref-name>AnswerQueue</res-ref-name>
- <res-type>javax.jms.Queue</res-type>
- </resource-ref>
- </message-driven>
-
- <!-- Configure the session bean that will be sending message to the
ChatBean queue,
-and listening for the answer -->
- <session>
- <ejb-name>MessagingClientBean</ejb-name>
- <business-local>org.superbiz.mdb.MessagingClientLocal</business-local>
- <ejb-class>org.superbiz.mdb.MessagingClientBean</ejb-class>
- <transaction-type>Container</transaction-type>
-
- <!-- Allow the connection factory to looked up via
java:comp/env/ConnectionFactory -->
- <resource-ref>
- <res-ref-name>ConnectionFactory</res-ref-name>
+
<res-ref-name>java:comp/env/org.superbiz.mdbdesc.ChatBean/connectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
+ <mapped-name>Default JMS Connection Factory</mapped-name>
+ <injection-target>
+
<injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>
+ <injection-target-name>connectionFactory</injection-target-name>
+ </injection-target>
</resource-ref>
- <!-- Allow the reply queue to looked up via java:comp/env/AnswerQueue -->
- <resource-ref>
- <res-ref-name>AnswerQueue</res-ref-name>
- <res-type>javax.jms.Queue</res-type>
- </resource-ref>
-
- <!-- Allow the destination queue to looked up via java:comp/env/ChatBean
-->
- <resource-ref>
- <res-ref-name>ChatBean</res-ref-name>
- <res-type>javax.jms.Queue</res-type>
- </resource-ref>
- </session>
+ <resource-env-ref>
+
<resource-env-ref-name>java:comp/env/AnswerQueue</resource-env-ref-name>
+ <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
+ <mapped-name>AnswerQueue</mapped-name>
+ <injection-target>
+
<injection-target-class>org.superbiz.mdbdesc.ChatBean</injection-target-class>
+ <injection-target-name>answerQueue</injection-target-name>
+ </injection-target>
+ </resource-env-ref>
+ </message-driven>
</enterprise-beans>
-
- <!-- define the JMS queues that we need -->
- <assembly-descriptor>
- <message-destination>
- <message-destination-name>AnswerQueue</message-destination-name>
- </message-destination>
- <message-destination>
- <message-destination-name>ChatBean</message-destination-name>
- </message-destination>
- </assembly-descriptor>
+ <assembly-descriptor/>
</ejb-jar>
Copied:
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/ChatBeanTest.java
(from r1090810,
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdb/ChatBeanTest.java)
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/ChatBeanTest.java?p2=openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/ChatBeanTest.java&p1=openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdb/ChatBeanTest.java&r1=1090810&r2=1090996&rev=1090996&view=diff
==============================================================================
---
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdb/ChatBeanTest.java
(original)
+++
openejb/trunk/openejb3/examples/simple-mdb-with-descriptor/src/test/java/org/superbiz/mdbdesc/ChatBeanTest.java
Mon Apr 11 09:54:11 2011
@@ -19,30 +19,70 @@ package org.superbiz.mdb;
import junit.framework.TestCase;
-import javax.naming.Context;
-import javax.naming.InitialContext;
+import javax.annotation.Resource;
+import javax.ejb.embeddable.EJBContainer;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
public class ChatBeanTest extends TestCase {
- protected void setUp() throws Exception {
- System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.LocalInitialContextFactory");
- }
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Resource(name = "ChatBean")
+ private Queue questionQueue;
+
+ @Resource(name = "AnswerQueue")
+ private Queue answerQueue;
public void test() throws Exception {
- InitialContext context = new InitialContext();
- MessagingClientLocal bean = (MessagingClientLocal)
context.lookup("MessagingClientBeanLocal");
+ EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+ final Connection connection = connectionFactory.createConnection();
+
+ connection.start();
+
+ final Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
+
+ final MessageProducer questions =
session.createProducer(questionQueue);
+
+ final MessageConsumer answers = session.createConsumer(answerQueue);
+
+
+ sendText("Hello World!", questions, session);
- bean.sendMessage("Hello World!");
+ assertEquals("Hello, Test Case!", receiveText(answers));
- assertEquals(bean.receiveMessage(), "Hello, Test Case!");
- bean.sendMessage("How are you?");
+ sendText("How are you?", questions, session);
- assertEquals(bean.receiveMessage(), "I'm doing well.");
+ assertEquals("I'm doing well.", receiveText(answers));
- bean.sendMessage("Still spinning?");
- assertEquals(bean.receiveMessage(), "Once every day, as usual.");
+ sendText("Still spinning?", questions, session);
+
+ assertEquals("Once every day, as usual.", receiveText(answers));
+
+ }
+
+ private void sendText(String text, MessageProducer questions, Session
session) throws JMSException {
+
+ questions.send(session.createTextMessage(text));
+
}
+
+ private String receiveText(MessageConsumer answers) throws JMSException {
+
+ return ((TextMessage) answers.receive(1000)).getText();
+
+ }
+
}
//END SNIPPET: code