2008年4月6日日曜日

スタンドアロンなJMSクライアント(Sun Java System Application Serverに実装されてるJMS編)

テスト用にスタンドアロンで動くJMSクライアントを作ってみる。
JMSプロバイダは、
Java EE 5 SDKについてくるSun Java System Application Server(SJSAS)についてくるJMS実装(ややこしい)のiPlanet Message Queue for Java[tm] Software(iMQ)を利用する。
このiMQは、SJSASの管理コンソールからは、Sun Java System Message Queueブローカーと呼ばれてる。
ということは、Sun Java System Message QueueってiMQだったのか。

それはいいとして、
EclipseでJavaプロジェクトを作る。
以下のライブラリをパスに追加する。
${JAVA_SDK_HOME}/imq/lib/jms.jar
${SDK_HOME}/imq/lib/jms.imq.jar
${SDK_HOME}/imq/lib/jms.imq_ja.jar

ソースは以下のとおり。

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;

public class Sender {
public static void main(String[] args) {

// デフォルト設定(localhost:7676)で実行されているブローカーに対してTCPベースのキューを作成する
QueueConnectionFactory factory = (QueueConnectionFactory) new com.sun.messaging.QueueConnectionFactory();

QueueConnection connection = null;
QueueSession session = null;
Queue queue = null;

try {
connection = factory.createQueueConnection();
session = (QueueSession) connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
// 自前でQueueオブジェクトを作成するためには、物理送信先を指定する
queue = session.createQueue("MyPhysicalQueue");
QueueSender sender = session.createSender(queue);
TextMessage msg = session.createTextMessage();
msg.setText("Send Text");
sender.send(msg);

sender.close();
session.close();
connection.close();

} catch(JMSException jmse) {
jmse.printStackTrace();
}

System.out.println("mission complete!");
}
}


■SJSASにJMSのキューを設定する

[設定]-[Javaメッセージサービス]-[物理送信先]から、

新しい物理送信先


の画面を開く。

名前:MyPhysicalQueue
タイプ:javax.jms.Queue

で、了解を押して、物理送信先を作成する。


上記のプログラムを実行すれば"Send Text"というメッセージがMyPhysicalQueueという名前のキューにPUTされる。



JNDIを使ってキューを取得するには、APサーバ(JNDIプロバイダ)の設定が必要。

[リソース]-[JMSリソース]-[送信先リソース]から

新しい JMS 送信先リソース


の画面を開く。

JNDI名:jms/MyQueue
送信先物理名:MyPhysicalQueue
リソースタイプ:javax.jms.Queue

以下のプロパティを追加する
名前:Name
値:MyPhysicalQueue

で、了解を押す。
これで、"jms/MyQueue"という名前で、MyPyhsicalQueueという物理送信先が取得できる。

2008年4月1日火曜日

Javaの本とか

手持ちのJava関連の本を整理してみるテスト。

マスタリングJavaEE5 ★★★★★
  和書でJavaEE5を一通り解説している唯一の本。JAX-WSやJAXB2.0も載っている。
  EJB2.0とEJB3.0の比較を行うなど、解説は懇切丁寧。トランザクション制御などの話になると、簡略化されてしまっているところが残念。
  後はJavaEE 5に準拠したアプリケーションサーバが充実するのを待つばかり。
  早く対応して、WAS。JavaEE5の対応状況を考えると、OSSの開発速度はさすがと言うべきか。
Enterprise JavaBeans ★★★★★
  これを読まずしてJ2EEは語れない。
論より現場のJ2EE入門 ★★☆☆☆
  J2EEというか、EJBの本。解説が微妙。環境はJBoss3.x
  まずは実際にEJBのコードを書いて動かしてみたい、という要望に唯一答えてくれる本。
  (Web上ならそういった情報はたくさんありそうだけど)
EJBデザインパターン ★★★★☆
  マスタリングEnterprise JavaBeansの第一章という位置づけ。
  EJBであれこれ悩む前に、まずは目を通すことをお勧めする。
EJBアンチパターン ★★★★☆
  明確な理由が無い限りこれは使うな、って否定はしてくれるんだけど、その根拠が明記されていない。
  でも、EJBにおけるさまざまな気づきを与えてくれる良書。
  EJBを使った方式の設計に関わるなら必読。
標準EJB3.0プログラミング ★★★☆☆
  微妙・・・洋書だけどEnterprise JavaBeansの第5版を買うか
Javaメッセージサービス ★★★☆☆
  入手困難、中古でやっと買った。
  メッセージセレクタに指定できる条件とか、どのヘッダが自動的に付与されるとか、
  キューの動的作成やら、セキュリティの話まで、非常にコンパクトにまとまっていて良い。
  内容がJMS製品に依存しないため、読みながら実装していく、というスタイルが取るためには、
  自分でJMS製品の使い方を調べていかないといけないのが難点か。
Java Message Service 導入ガイド ★★★☆☆
  チュートリアル形式でJMSを解説している。が、環境が古い。J2EE 1.3のSDKベース。
  (といっても、J2EE 1.3のSDKは今でも配布されているので大した問題ではない)
  後半はAPIリファレンス。
Professional Apache Geronimo ★★★☆☆
  Geronimo1.1の解説書。GBeanのアーキテクチャから、デプロイメント記述子の解説も載っている。
  今となっては内容が古い。
Light Weight Java ★★★☆☆
  JSFとかHibernateとかSpring、あるいはそれらの連携方法を手っ取り早く知りたい人のための本。
XMLとJavaによるWebアプリケーション開発 ★★★★☆
  Webアプリケーション開発と銘打ってあるが、DOMやSAXの解説が充実しており、JavaでXMLを使う場面では重宝する。
  StAXやJAXB2.0を取り入れて、改訂されることを期待。
Java Swing Hacks ★★★☆☆
  こういうGUIが作りたいけど、どうしたらいいんだ、ってときに重宝する。
  Swingの基礎についての解説は皆無。

あと、Java仮想マシンとか言語仕様とか、Effective JavaとかSpringとかSeasarとか、サーブレットとか、いろいろあったはずだけど、埋もれてる。

参加ユーザー

今月の本

  • 臆病者のための株入門
  • TSPガイドブック:リーダー編
  • 夜明けの街で
  • 詳解Oracleアーキテクチャ
  • Ajax イン・アクション
  • 実践Ajax
  • すごい「実行力」
  • More Effective C++
  • 母子関係の理論
  • コンピュータアーキテクチャのエッセンス