2007年11月22日木曜日

Leopard

Mac mini が届いた。が、気づいたらキーボードがPS2 だった。
翌日Apple keyboard を購入してやっと起動。ムービーが流れて、
ユーザー登録から始まる。まだTiger だ。
Leopard の DVD? を入れてアップグレード。難なく終わった。

Spaces はデフォルトでオフなので、オンにしたが F8 がきかない。
Apple keyboard では F1-F12 まではほかの機能に割り当てられていて
ファンクションキーとして動かすには fn と同時に押す必要が
あるようだ。でも、それでは面倒なので起動は F13 にふってみたが、
動作がどうも見覚えのあるのと違う。4つの小窓が出てきて、矢印も
出てきてびゅんびゅんと切り替わるというイメージだったが、どうも
地味だ。後でわかったが ctrl+矢印でそのような動作になる。
築かなかったらフリーソフト探しまくってたかも...

Mail で IMAP 接続できるか試してみるが、これには SSL 機能は
見当たらない。あきらめかけたところで、Thunderbird を試して
みる。なんか、うまくいった。ただ、パスワードを覚えさせて
しまって、それがどこに行ったか気になった。OS X のキーチェーン
を調べても Thunderbird のエントリはないし... どうやら Thunderbird
自身が保持しているようだが、詳細は今日のところはあきらめた。

Boot camp で既存ボリュームのリサイズができるか気になっていた
ので試してみたが、問題ないようだ。

Parallels も購入しておいたので入れてみる。最初の起動でプロダクト
キーを入れたら、アップデート版の通知がでる。アップデートすると
もう一度プロダクトキーを要求された。

マニュアルが厚めだったので、かまわず直感でやってみる。
ゲストOS に見せるメモリサイズや、ディスクサイズなどの設定は
一番詳しい(一番下)のモードを選ぶ必要がありそう。

Solaris 10 を入れてみた。やはり I/O がホストOS 経由のせいか
直接ディスク入れるときより遅い気がする。はたと気づくと Parallels
のウィンドウがない。ただ、プロセスとしては存在しているようだ。
このとき、ほとんど操作ミスで画面のスクリーンショットをとった
のだが、そこにはコンソールモードでの問い合わせメッセージが
でている。NFS のドメインがなんたらというやつだ。

よくわからなかったので、強制終了して Lepard も再起動。Solaris 10
は起動中にいわゆるシングルユーザーモードで止まってしまった。
インストールが完了していないということだろう。

いったん消して、再度インストールしてみる。右側のタブに全画面表示
があったので、今度はそのモードでインストール。alt-enter で全画面と
通常を行き来できる。VMWare などと同じでいったんゲストの画面に
マウスポインタが移ると ctrl-alt しないと OS X にもどらない。

インストール完了、GUI ログインも出てくる。が、画面がでかい。
xwininfo -root でみると 1600x1200 になっている。Parallels の
編集/仮想マシン、、、で画面サイズを変更しても反映されない。
これは xorgcfg でディスプレイのサイズを低い解像度にすることで
解決できた。

次はネットワークだが、どうも Solaris からは見えていない。SMC
などで DHCP の設定などないか探してみるが見当たらない。Solaris との
ファイル共有はできないので、ファイル転送はネットワークしかないのだが...

Google をサーチすると手順が見つかった。/Library/Parallels/Tools/vmtools.iso
をCD/DVD デバイスにして Solaris を立ち上げると、このイメージがマウント
されているので、その中にある solaris 用の network.sh を実行して、
DHCP のクライアントになるかに yes と答えるだけだ。どうやら、ここの
部分は Parallels 側から提供されていて、インストール時点では
ネットワークは全くないことになっているようだ。

あがってしまえば ssh, scp で操作はできる。

ちょっとじたばたしたが、結構いい感じ。

2007年11月20日火曜日

Ant notes

Ant の覚え書き

ファイルからプロパティをロードするには次の要素を設定しておく。


<property file="build.properties"/>


build.properties には key = value を書いておく。
build.xml からは ${key} で参照可能。

あまり真剣に書いたことがなかったが、Java プログラムの起動に引数が
たくさんつくケースのために java タスクを使ってみる。結果、次のような
物に落ち着いた。


<target name="run_pja" depends="compile" description="run">
<java classname="test" fork="true">
<classpath>
<pathelement location="${jcaptcha.jar_path}"/>
<pathelement path="."/>
</classpath>
<jvmarg value="-Xbootclasspath/a:${pjajar}"/>
<jvmarg value="-showversion"/>
<sysproperty key="awt.toolkit" value="com.eteks.awt.PJAToolkit"/>
<sysproperty key="java.awt.graphicsenv"
value="com.eteks.java2d.PJAGraphicsEnvironment"/>
<sysproperty key="java2d.font.usePlatformFont" value="false"/>
<sysproperty key="java.awt.fonts" value="${jh}/jre/lib/fonts"/>
<sysproperty key="user.home" value="${pja_home}/lib"/>
</java>
</target>


fork="true" をしてしているのは jvmarg は fork="true" でのみ有効だから。

-Dkey=value は <sysproperty key="..." value="..."/> を羅列すれば
良いらしい。<syspropertyset .../> は使っていた版で java task ない
ではサポートされていないと出たので今回は見送る。

2007年11月16日金曜日

Technologies for SOA

SOA!!!



Sun Tech Days で SOA 関連のセッションで紹介されていた BPEL など SOA
関連の技術が思っていたよりわかりやすかった。また、NetBeans 6 ではその
開発を補助する機能がそろっているという事でチュートリアルをみながら
試してみた。

以前、Axis を活用しようと思ったときに、XML Schema や WSDL の手書きに
ウンザリしたので、少し敬遠していたけれど、NB6 ではこれらのファイルも
IDE の管理下で作れるらしい。

チュートリアル概要



HelloWorld は単純すぎるので Loan のサンプルの概要を書いておく。

BPEL モジュールの作成


New Project > SOA > BPEL Module で作成できる。

  • XML Schema の作成

    サービス呼び出しの際に簡単な文字列をひとつ渡すだけであれば、これは
    おそらく必要がない。実際には何らかのデータ構造を渡すことになるであろうし、
    それには、それなりの型を持たすことがわかりやすい。そうするためには XML
    Schema で complex type を定義することになる。



    実際の操作は画面右側のパレットから Complex Type を Editor の Complex Types
    のところにドロップすることで型が作れる。さらにそれぞれの型に Element icon
    をドロップして要素を作っていく。



    もうひとつ行うことは Complex Type を決めてから、それらをグローバルエレメントに
    登録すること。やり方は Element icon を Editor の Elements のところにドロップ
    して名前をつけて、Definition で Complex Types に作った型の名前をセットする。


  • WSDL の作成

    Process Files の下に WSDL document を作成する。独自の XML Schema を使う場合には
    Import XML Schema File(s) チェックボックスをチェックして先に定義したものや、
    ネームスペースを利用して、インポートできる。



    次は Editor の Partner タブでメッセージの名前や、型を決める。In/Out の最低2つは
    あるので、リクエストの名前をわかりやすいものに変え、型を決める。型はダイアログの
    中から選ぶだけなので簡単。XML Schema をインポートしておけばその中で決めた型を
    引数の型に使える。この際の型の名前は complex type の名前ではなく Elements に
    登録した名前になる。IDE が選択肢を示してくれるので簡単だが、うろ覚えで手書きだと
    とてもはまるかも知れない...



    オプショナルで LoanProcessor EJB モジュールを作る。ユーザー情報をもとに Loan の
    可否を判定する。必然的に Web Service のインターフェイスを持つことになる。
    Web Service のフォルダを右クリックして Web Service を作れる。そのあと、その
    Web Service を右クリックして Add Operation で操作を追加する。その際にパラメータも
    定義する。結果として @WebService アノテーションを使った java ソースができる。
    作成時に Session Bean にデリゲートすることもできるようだ。
    本当に EJB じゃないといけないのかと疑問に思った。なぜなら EJB Container が
    前提といわれると困るから。結果として、これは杞憂。できたのは本当にクラスを
    まとめただけの jar ファイルだった。wsdl もこの時点では存在しない。



  • BPEL process の作成

    Process Files に BPEL Process を作るとフローチャートのような画面が現れる。
    まずはここに入力として request の wsdl, Loan のチェックを行う web service
    を登録する。後者に関しては wsdl は自動生成されるようだ。このステップは
    モジュールのドラッグでできる。



    この次のステップとして、receive, invoke, reply をパレットからドラッグして、
    サービスと関係付けていく。プロセスの最初は、receive で始まる。リクエスト待ちの
    先頭というわけだ。



    Assign 要素で変数を作る。関連づけは BPEL Mapper でソースとデスティネーションを
    つなぐだけだ。




  • Composite Application の作成

    別プロジェクトとして Composite Application を作る。この定義ファイルは *.casa.
    この JBI モジュールとして、作成した BPEL module をドラッグ&ドロップで登録。



    これに consumer としての SOAP アダプターを登録する。



  • テストの作成、登録

    composite application の Test folder にテストを作れる。リクエストのパラメータを
    埋めるだけでテストになる。1回目の実行結果が正しい実行結果とされ、以後のテストと
    比較される。結果を消す、クリアしてしまえば正しいテスト結果を変えられるということか?


  • JBI とは

    NB6 の Composite Application が JBI の実装ということかなと思う。JSR 208 という
    事だが、これには IBM, BEA は賛同していないらしい。BPEL まではいいが、その上は
    まだ議論の余地があるということか....ということはこれらのベンダのBusiness Process
    Integration は propretary ???