前回、WASCE で JMS(ActiveMQ)の動作を確認した。今度は、その勢いで MDB をやってみる。
■ hello-mdb
- [New]/[EJB Project]でEJBプロジェクトの作成を開始
- プロジェクト名を hello-mdb とか適当に指定。
- 以下を確認
Target runtime | IBM WASCE v2.1 |
EJB Module version | 3.0 |
Configuration | Default Configuration for ~ |
- Geronimo Deployment Plan のページまで進む
- groupId 等を適当に入力。ここでは以下のようにした
groupId | net.yasuabe.studies.wasce |
artifactId | hello-mdb |
version | 1.0 |
Artifact Type | ejb |
- こんな感じで Message Driven Bean を書く
package sample;
import ・・・略
@MessageDriven(name = "MDB1", activationConfig = {
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(
propertyName = "destination",
propertyValue = "HelloQueue") })
public class MDB1 implements MessageListener {
public void onMessage(Message message) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException ex) {
throw new RuntimeException(ex);
}
}
}
- こんな感じで openejb-jar.xml を編集する
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ejb:openejb-jar
xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
・・・略
xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1">
<dep:environment>
<dep:moduleId>
<dep:groupId>net.yasuabe.studies.wasce</dep:groupId>
<dep:artifactId>hello-mdb</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>ejb</dep:type>
</dep:moduleId>
<dep:dependencies>
<dep:dependency>
<dep:groupId>console.jms</dep:groupId>
<dep:artifactId>HelloResourceGroup</dep:artifactId>
<dep:version>1.0</dep:version>
<dep:type>rar</dep:type>
</dep:dependency>
</dep:dependencies>
</dep:environment>
<ejb:enterprise-beans>
<ejb:message-driven>
<ejb:ejb-name>MDB1</ejb:ejb-name>
<name:resource-adapter>
<name:resource-link>HelloResourceGroup</name:resource-link>
</name:resource-adapter>
</ejb:message-driven>
</ejb:enterprise-beans>
</ejb:openejb-jar>
■ デプロイ- Eclipse で [Export]/[EJB JAR File]を実行して適当な場所に jar を作る
- WASCE の管理コンソールで"Applications"/[Deploy New]
- Archive でjar を指定して[Install]実行
- The application was successfully deployed (または redeployed)と表示されることを確認
■ 確認- 前回作った JMSTest の testSend() を文言だけ書き換えて、Outline ビューから個別実行
@Test
public void testSend() throws Exception {
QueueSender queueSender = session.createSender(queue);
TextMessage message = session.createTextMessage(
String.format("Hello, MDB!: %1$tH:%1$tM:%1$tS", new Date()));
queueSender.send(message);
}
- コンソールにHello, MDB!: 05:07:29といったメッセージが表示されるのを確認
■ 所感- openejb-jar を正しく書くのがちょっと難しくてけっこう試行錯誤した。
- アノテーションだけで済むだろうと何となく楽観してたら、かなりXML作業があって面倒くさい。
- 後、Geronimo が不便+不慣れで、とにかく手間がかかって気が滅入る。アンインストールしたつもりでもファイルが残っていて、再デプロイがコケたりするので、何度も手作業で{WASCE_HOME}以下のファイルを掃除したりする羽目になる。ネット上の情報も余り多くないし、かなり扱いにくい・・・。
0 件のコメント:
コメントを投稿