2012年04月

組込みブローカーとはJMSクライアントと同じJVM上でActiveMQを起動させる技。
これを使えばクライアントを起動するだけでサーバも起動するし、サーバ-クライアント間の接続が切れる事は無くなる筈。

	BrokerService broker = new BrokerService();
	broker.addConnector("tcp://localhost:61616");
	broker.start();

をするだけで、クライアントと同じJVMで起動したっぽいんだが、WebAPな管理コンソールには接続できぬ。こりゃ送信プログラム作らないとわからない?不便。というかキューとかどうやって作るのだろう。設定ファイルを弄るのだろうか。そもそも設定ファイルはどこを参照しているのだろうか。AcriveMQのインストールディレクトリはこのJMSクライアントは知らない筈。
http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html
http://www.jarvana.com/jarvana/view/org/apache/activemq/activemq-core/5.3.0/activemq-core-5.3.0-javadoc.jar!/org/apache/activemq/broker/BrokerService.html
何か、↑のAPIをたどって、JavaAP中から作るような気もしてきた…。

このエントリーをはてなブックマークに追加

最終回。
星飛雄馬ペナントレース制覇の後、日本シリーズで4連投、大リーグボール1号、2号、3号*1、右1号を全部使って、パーフェクトゲーム達成で最高殊勲選手となり、その活躍を見ながら星一徹が眠るように死亡。花形明子出産。長嶋が「星、君は巨人の星だ」、と、ここまでは良いんだが、その後、新人江川を見て「また、巨人の星を目指して飛び立とうとしている男がいる…」は蛇足な気が。よりによって江川入団かよ。んでその後、飛雄馬は大リーグ目指して渡米する船に乗っておしまい。
結局大リーグボール右1号・蜃気楼ボールは、花形以外誰も破れなかったし、花形も燕反し打法で一発打つと体を壊して引退、だから無敵の魔球だな。

*1:何もよりによって健康に悪い3号まで投げなくても…。

このエントリーをはてなブックマークに追加

XSDから対応するJAXBなクラスを生成、同じXSDから殆ど空のようなサンプルXMLも生成、

<?xml version="1.0" encoding="UTF-8"?>
<de:Hoge
	xmlns:de="http://hogehoge/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</de:Hoge>

こう使う。

String inputStr="<?xml ..."
StringReader sr = new StringReader(inputStr);
JAXBContext jc = JAXBContext.newInstance(HogeType.class);
Unmarshaller u = jc.createUnmarshaller();
HogeType data = (HogeType) u.unmarshal( sr );

でいきなり、

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://hogehoge/", local:"Hoge"). Expected elements are (none)

で訳がわからないよ。
いやエラーは良い(良くない)んだが、トラブルシュートに難儀する。ここは日和っていつものJDOMにするか。いや先日のMetroもあり、JAXBも使ってみたかったが…。ありゃどうも先にJavaありきで始めると割と良かったが逆は今回のような体たらく。
しかし実際は何が原因なんだろうなぁ。エラーメッセージからして例によって、鬼門・ネームスペースか。私の場合、XMLのネームスペースは「在ってよかった!」って場面より、トラブルの元になることの方が多いような。
どうもアンマーシャリングには別のパーサを使えるらしい。http://java.sun.com/javase/ja/6/docs/ja/api/javax/xml/bind/Unmarshaller.html しかし解決になるかは不明だな。結局パース部分はブラックボックスな訳だし。しかし今後対応するXSDが増えるとしたらJAXBにはしておきたい所。

このエントリーをはてなブックマークに追加

が安いというので銀座三越に行ってきた。
肩の角度が左右で違う事が判明。うーむ。長年肩掛け鞄を使った所為なのか。
天気が微妙な所為か、やけに道が空いてて歩きやすくて真に結構。銀座は割と近所にも関わらず結婚前は殆ど行かなかったので未だに物珍しい。
ちなみに元が高かったのか、あんまり安いって程安くはなかった。

このエントリーをはてなブックマークに追加

本当は「ActiveMQ in Action」を読みに図書館行ったが無かったのでこっち。ただ、J2EE 1.3をJMSサーバに使ってるみたいで古い。そしてあんまり大した事書いてない。JMS自体も使うだけなら別にそう複雑な話でも無いしなー。
それにしても世の中のJMSクライアントのサンプルがみんなExceptionListenerを省いているのは如何なものか。
キューの場合、セッションは必ず1スレッドで使う、というかセッション自体がそもそもスレッドのコンテキストに名前をつけたものなのか。APサーバのMDBは複数インスタンスだけどどうしてるんだろう?セッションは一つで受信後にデータを別スレッドキューに渡して処理してるのだろうか。でもそれだと失敗時にロールバック面倒なような。

Java Message Service導入ガイド―J2EEのためのメッセージング (The Java series enterprise edition)Java Message Service導入ガイド―J2EEのためのメッセージング (The Java series enterprise edition)
マーク ハプナー ラフル シャルマ キム ハーゼ リッチ ブリッジ ジョゼフ フィアリ クレオミドルウェア事業部

ピアソンエデュケーション 2003-03
売り上げランキング : 724552

Amazonで詳しく見る
by G-Tools

このエントリーをはてなブックマークに追加

急いで途中まで斜め読みしただけだが、字がでかい。
OLAPとは何ぞや?という話が書いてあった。
EDP 事務
 ↓
MIS 経営管理レベル 1960−70
 ↓
DSS(1980年)
 ↓
OLAP
だそうな。キューブ云々はまだ読んでない。
EssBaseってこんな古い本で紹介されてる歴史ある代物だったのね。これもまたOracleに買収されて微妙だが。なんか私の行く先々の製品みんなOracleが買収してる感じ。

OLAP―実践データウェアハウス (CR選書)OLAP―実践データウェアハウス (CR選書)
豊島 一政 木村 哲

日本経営科学研究所 1997-07
売り上げランキング : 487618

Amazonで詳しく見る
by G-Tools

このエントリーをはてなブックマークに追加

6時に出先での仕事が終わり、偶然にも丁度7時に同じく青山で飲み会だったので、1時間暇。今日はやけに寒いので余り歩き回らず時間を潰そうとPRONTOに入ったら、何ですってね、6時からは飲み屋モードでアイスコーヒーしか出ないんだそうで。そのアイスコーヒーが一杯480円。んで、飲み屋モードに変形完了したPRONTOは明かりが超暗い。
いやPRONTOは初めて入ったが、てっきりドトールとかスターバックスの同類と思ってたが、別の何かであった。認識を改めねば。
ちなみにアレ系喫茶店の中ではベローチェ最強説。

このエントリーをはてなブックマークに追加

昨日の件
結論から言うとActiveMQでもWebLogic同様に、JMSの接続ファクトリをJNDI経由で取得することが出来た。

接続先のURLはtcp://localhost:61616で、コネクションファクトリ名は"ConnectionFactory"。WebLogicでは事前に管理コンソールでコネクションファクトリ作っておくんだけど、これは特に事前に定義等はしてないけど見つかった。謎。grepしたらconf/camel.xmlにそれっぽい定義があった。名前変えられるのかな?
で、謎のjndi.propertiesについては、普通にドキュメントに書いてあった。

The first thing is ActiveMQ does not provide a full JNDI server. This means JMS clients need to use properties files to create a jndi IntialContextFactory.

http://activemq.apache.org/jndi-support.html

という事だそうな。
ということは、WebLogicから送信する時はjndi.propertiesをクラスパスに入れないといけないかもな。
次はC++からのアクセスと、WebLogic側のJMSキューのステータスとか取るWLSTの準備だな。

このエントリーをはてなブックマークに追加

昨日の件。図にすると、WebLogicの各コンポーネントとJMSクライアントの関係はこうなっていると思う。

JMS接続ファクトリやJMSキューの実体はWebLogic側のJNDIに登録され、クライアントはJNDI経由でそれらを参照して利用。
となると、クライアントからWebLogicへのソケット接続情報はJNDIのコンテキスト取得時に設定する。
ActiveMQもJMS関連は同じコンポーネントを持っているはずなのだが、クライアントのソースを見ると、こういう感じ

接続ファクトリをJNDI経由じゃなくて、ポート61616を決め打ち(ActiveMQが提供するクラスの定数になってる)にして自前でnewしてる。キューはActiveMQ上のJNDIを参照して取ってるみたい。
つまりソケット接続情報が2つ存在する。JNDIのURL(tcp://localhost:61616)と、接続ファクトリ作る時の相手URL(failover:tcp://localhost:61616)。まぁ結局同じポートなんだけど。
んで。
今度はWebLogicがJMSクライアントとなり外部JMSサーバであるActiveMQに接続する場合、WebLogicの管理画面はActiveMQの接続ファクトリオブジェクトのインスタンスをnew出来る訳が無いので、JNDI参照する事になる。
ということは、WebLogic側の設定画面でソケット接続情報すなわちポート番号をセットする箇所はJNDIのコンテキストの辺りしかない、という事になるな。
そして謎が残る。ActiveMQ用JMSクライアントが持つjndi.propertiesは一体何をしてるんだろう?ここにキュー名の設定を入れないと確かに動作しないんだが…。

このエントリーをはてなブックマークに追加

するためには、管理コンソールから外部JMSサーバを定義して、その下に外部接続ファクトリと外部あて先を作る(筈)。
http://docs.oracle.com/cd/E16340_01/web.1111/b55547/advance_config.htm#i1081815

・外部JMSサーバのパラメータとしてはJNDI初期コンテキストファクトリとJNDI接続URLがある。
JNDI初期コンテキストファクトリはたぶん com.sun.jndi.fscontext.RefFSContextFactory だと思う。WebLogicActiveMQの org.apache.activemq.jndi.ActiveMQInitialContextFactory を知ってる筈が無いので。
JNDI接続URLが判らない。昨日やっと動いたサンプルからすると、vm://localhost 。だが…しかし…この情報でAcrtiveMQプロセスと通信できるとは思えない…。どうもJNDIの理解が弱い。相手先と通信しないのだろうか?まぁ…ここはサンプルを信じるか。

・外部あて先は内部JNDI名と外部JNDI名で構成され、まぁそれはOK.
ローカルJNDI名はActiveMQqueue
リモートJNDI名はqueue.ActiveMQqueue
で大丈夫だろう(昨日とはキューの名前を変えた)。

・接続ファクトリ。これが問題だ。
昨日のサンプルでは

    //qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); //WLS版
	qconFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);//  ActiveMQConnection.DEFAULT_BROKER_URL="failover://tcp://localhost:61616"

とその場でnewで作ってる(この辺もちょっと判らんところだけど)。
接続ファクトリの要素は ローカルJNDI名とリモートJNDI名。あれ?接続情報は?要はポート番号は?んー。謎。どこかに定義しなければソケット通信できない筈では。
あとさしものWLS管理コンソールも外部JMSに送るテスト画面は無いっぽいのでサーブレット作らないとテストできぬ。
http://docs.oracle.com/cd/E16340_01/web.1111/b55547/deployjms.htm#g1076209

このエントリーをはてなブックマークに追加

↑このページのトップヘ