watermint.org

Takayuki Okazaki’s blog

先週の話ですが、Sun Tech Days 2008に行ってきました。今回はほかの雑用が多くて自分が発表するライトニングトークのセッション程度しか参加できませんでした。最近、この手のイベントに行くとデジタル一眼を持った人がたくさんいるので(自分もそのうちの一人ですが (^^ )今回は趣を変えて、Kenkoが輸入販売しているLensBaby 3Gを持って行きました。トイカメラっぽく映る、まともにピントを合わせるのさえ苦労するレンズです。
さて今回のライトニングトークセッションですが司会は寺田さん
_DSC5634
大渕さん
_DSC5636
今回も、といってもいいかもしれませんがSun Tech Days公式Webにあるセッション内容は聴講者に対してとても不親切です。今回のライトニングトークも、誰がしゃべるかについて公式ページでは一切言及されておらず、同じ時間帯の2-S-2 Lighting Talksとの差は外見上違いがありません。もちろん、2-J-2 Lighting TalksはJAVA AND SOCIAL COMPUTINGトラック、2-S-2 Lighting TalksはOPENSOLARISトラックなので、内容を推測することはできますが、間違えてJavaを聞きたいのにOpenSolaris側に参加してしまったり、またその逆があり得るかもしれません。同じ時間帯にやるならせめて2-J-S Java Lighting Talksとか、2-S-2 OpenSolaris Lighting Talksのようなタイトルにしてほしいところです。
Sun Tech Daysのタイムテーブル
またライトニングトークのスピーカーについては、事前に明らかにされたのは知る限り増月さんのブログだけかと思いますが、これではやっぱり不親切です(いろいろ裏事情をお聞きする限り厳しかったとは思いますが・・)。こんな声が上がるのは当然です。

SunTechDays 12/3に行って来た (某開発者の独り言)より。

2-j-2 Lightning Talks
「Javaの世界で有名な方ばかり集まってます!」いう司会のもと始まりましたが、顔ぶれみると確かに知っている名前ばかり。
というか、JavaExpert#03に記事だしてるjava-jaの人が集まった!?
というか、それならば事前にこのメンバーの名前をセッションの予定に入れておけばいいのにー。もっと人集まっただろうに。

去年のSun Tech Days 2007も同様にスピーカーが不明なセッションが結構あったので、来年はもう少し改善されることを期待します。
Takai-san
さて一人目の発表者は高井さん。RSpecについて。今回は僕の発表もそうですが、ライトニングトークというよりは、ショートプレゼンテーションというようなテイストでしたね。
_DSC5652
二人目はきしださんJJUG (日本Javaユーザグループ)について。飲み会重要とのこと。
_DSC5658
3人目はid:happy_ryoさん。NetBeansについて。ねこび〜んかわいいよ。というお話。と、プラグイン作ればいいよ!っていうお話。
4人目は僕のセッションでした。「GlassFish and the Future of Java EEを分かったつもりになる3分30秒」というタイトルで発表させていただきました。

ちなみにこのセッションの元ネタはこの発表の前日に寺田さんが発表された内容です。なぜその発表をこのLTでできたかというと、事前に資料が手に入ったからです(寺田さんが今回の発表向けに変更されたやつではなく、ワールドワイドで共通的に使われている資料)。Sun Tech Daysはワールドワイドで行われているイベントで、プレゼン資料などもだいたい同じものが使われます。このため、東京より先に実施された地域のプレゼンを参照すれば事前に資料が入手できるというスンポーです。僕の発表資料準備段階では韓国とブラジルの資料が公開されていました。韓国の資料は一部ハングル訳されていて読めなかったので、そのまま英語で書かれているブラジルの資料を参考にしました。
元資料はどう見ても内容を詰め込みすぎで、このプレゼンを聴いている人に何を伝えたいのか分かりませんでした。そこで今回は大事そうなポイントだけを抽出して3分30秒にまとめてみました。
_DSC5662
最後はYoshioriさん。やっぱうまいですね。今回のセッションの中で唯一LTっぽかったように思います。

9784774136776.jpg
今週の金曜日(11月14日)発売の技術評論社からでるJava Expert #03、まるごと!NetBeansに、「GlassFishを活用したエンタープライズシステム開発」という記事で執筆しました。記事中では現在主流のバージョンGlassFish v2をメインに、最新のGlassFish v3 preludeまでをカバーしています。GlassFish v3 preludeについては先週正式リリースされましたが、執筆時期とのタイミングの問題で若干情報が古くなっています。紙面だと書ききれなかったところもたくさんあるので、引っ越しなどがある程度落ち着きましたらまたこのブログや、Glassfishユーザ・グループ・ジャパンなどでアップデートできればいいなと思っています。たぶん、Sun Tech Days 2008ではこのあたりがきちんとカバーされるでしょうから、こちらが要チェックですね。関連しそうなセッションで言うと、12月2日13:00〜13:50の寺田さんのGlassFish and the Future of Java EEというセッション。

2005年に始まったGlassFishのダウンロード数は既に年間500万に達し、コミュニティは活発に成長しております。コンパクトかつ標準仕様に忠実な Java EE アプリケーションサーバを維持しながら、現行のGlassFish v2では品質やパフォーマンスを改善し(Project Grizzly), クラスタ機能、スクリプト言語(Ajax, Ruby, Ruby on Rails)、高可用性機能、Comet、SIP相互運用等が拡張されております。オープンソースと企業ユーザから求められる豊富な機能とパフォーマンスを伴う高度な品質製品に境目はなくなりつつあります。次に予定されているGlassFish v3は次世代のアプリケーションサーバです。OSGiを用いたモジュラー設計で、Java EE 6仕様にアーキテクチャ準拠しております。Project GlassFish v3の実装ではサーバソフトウエアで重要な2つのキーワード(モジュール化と拡張性)にフォーカスしております。このセッションではGlassFish v2のクラスタ機能、Metro Webサービススタックと .NETとの相互運用性、Web層(Grizzly, Comet, jMaki…)のツールと管理機能の特徴について紹介します。さらに、より先進的な話題GlassFish v3の概要と拡張性高いサーバサイドプラットホームを実現する実装技法について紹介します。最後に Java EE 6 に予定される新機能についても触れる予定です。

50分のセッションでカバーする範囲がとても広いので、GlassFish v3 Preludeに関してあまりたくさん盛り込めなさそうですが、全体をざっと見渡すには丁度良さそうなセッションだと思います。

昨日のGlassFish Night Seminar発表資料ですが、ようやくPDF化して公開することができました。「GlassFishで、作ってみた。」今回はずいぶんとIllustrator CS3と、Adobe Distiller 8、それにひょっとしたらMac OS X Leopardに苦しめられました。その苦労話を・・。
Illustrator and Distiller
まず、昨日の段階で資料をPDFに変換しようとしたら、Adobe PDFプリンタがいっこうに動き始めません(というか、動き始めてすぐ止まる)。何回やっても一時停止になるし、テストページの印刷でも同じだし、Firefoxなど別のアプリケーションから印刷しても同じだったのでこれはIllustratorではなくて明らかにAdobe PDFプリンタ、つまりAdobe Distillerの問題でした。EPSONのプリンタへはふつうに印刷できましたのでOSのプリントスプール側の問題でもなさそうです。
Illustrator and Distiller
強引にスプール上のジョブを再開しようとすると上図のように、Operation Could not be completed.とエラーになり全く進みません。Mac OS Xシステム環境設定の「プリントとファックス」でAdobe PDFプリンタを削除してから登録し直してもだめ。システム環境設定で削除しておいて、Adobe Acrobat Professionalのメニューで「ヘルプ」→「Acrobat インストールの修復」でPDFプリンタを入れ直してもだめ。しょうがなく、Adobe Acrobat Professionalを再インストールしてみましたがそれでもだめ。
Illustrator and Distiller
途方に暮れている頃に思いついたのがコンソールのエラーログを見ること。そうすると思惑通り、というかやっぱりDistillerがコケていることがわかりました。DistillerのCrash Reportをみると原因はSIGBUSで、常にThread 2がこけていました。Thread 2はCrash Reportのスタックトレースによると

Thread 2 Crashed:
0   com.adobe.DistillerLib        	0x01147b80 DistillerFontFolders::GetFontCachePath(char**) + 32
1   com.adobe.DistillerLib        	0x01157695 DistillerPSRip::SetupPSParameters() + 767
2   com.adobe.DistillerLib        	0x01157aba DistillerPSRip::PSInit(void*) + 224
3   ...ple.CoreServices.CarbonCore	0x90662d41 CooperativeThread + 309
4   libSystem.B.dylib             	0x93a176f5 _pthread_start + 321
5   libSystem.B.dylib             	0x93a175b2 thread_start + 34

というようにGetFontCachePathという関数で毎回こけているようです。海外のフォーラムで同様の現象を報告している人の中で、$HOME/Library/Application Support/Adobe/ 以下にあるFontCacheディレクトリのパーミッションを変えたら直ったという人がいて、試してみましたがだめでした。もっといろいろ情報集めをしていたところAcrobatの8.1.2アップデートに更新しろと書いている人がいました。Creative Suiteを入れたときに2〜3回Adobe Updaterでアップデートしていたので当然Acrobatも更新されているものだろうと思っていましたが、バージョンを確認したら意外にも8.0.0・・・。
Illustrator and Distiller
Adobe Updater、どこみとってん!一言愚痴を言わせてもらうと、Adobe Updaterの品質の低さは異常です。品質というか、ユーザアンフレンドリーさは、たくさんあるアップデートセンター系システムの中でも最低だと思います。まあ、そんな愚痴を心の中でつぶやきながらアップデート。
Illustrator and Distiller
毎回Safariのプラグインを入れるかきかれますが、ブラウザ中にPDF表示するのって大嫌いなので必ずオフにしています。Acrobatを入れて最初にやることはブラウザ上に表示させないように設定することです。Mac OS XのPreviewもSafari内にいたがりますが、

$ defaults write com.apple.Safari WebKitOmitPDFSupport -bool true

というようにdefaultsコマンドで設定をオフにしています。さて、Acrobat 8.1.2にアップデートしたことでようやくDistillerが快調に動き始めました。テスト印刷もばっちりです。では、Illustratorで・・・。
Illustrator and Distiller
あれ?各ページが1/2のサイズになって、しかも前後のページが半分ずつ各ページに入っています。2ページ目には1ページ目と3ページ目の上下が、3ページ目には2ページ目と4ページ目の上下が・・・。なにこれ。
Illustrator and Distiller
Illustrator上では今回、ドキュメントサイズは幅297mm、高さ4200mm (A4横の用紙を縦方向に20枚並べた大きさ)に設定し、プリントの設定として用紙サイズA4横、セットアップでタイルに「用紙サイズで区分ける」、トンボと裁ち落としで裁ち落としを天地左右 0mmとしてページ分割されるように設定しました。あとはメニューの「表示」→「ページ分割を表示」とすれば印刷サイズにあった罫線が表示されそのようにデザインしやすくなります。ページ分割が表示されているとおり印刷結果が得られるだろうと考えていましたし、実際Tigerで使っていた頃はそう結果がえられたので何も疑問なくやっていましたが、いざおかしくなるとどうしていいかわかりません。
Illustrator and Distiller
結局悩みに悩んでうまく行った方法が、プリンタをAdobe PDF 8.0ではなく、Adobe PostScriptファイルとして、PostScriptでの結果をまず得て、その結果をAdobe DistillerでPDFに変換する方法です。Adobe PDF 8.0プリンタも中身はDistillerのはずなので、釈然としませんが、とりあえずうまくいったのでこれでよしとします。そもそも、複数ページ(しかも20ページとか・・)のデザインをIllustratorでやることはあまり想定されていないのでしょうがないところですね。ああ・・InDesignがほしい。そういえば、Creative Suite 4が発売になりましたが、InDesignやAfter Effects・Premiereを含むMaster Collectionへのアップグレードが今持っているCreative Suite CS3 Web Premiumからだと$1,199なんですよね・・・。日本での値段はまだわかりませんが、ちょっとほしくなってきました。

GlassFish ESBのマイルストーンビルドが出て少し経ちましたが、遅ればせながら入れてみました。ところで、GlassFish ESBはhttp://glassfishesb.orgというサイトがあるにもかかわらず、https://open-esb.dev.java.net/glassfishesb/にフォワードされます。http://glassfish.orghttps://glassfish.dev.java.netにフォワードされるのと同じテイストでしょうか。FishCATのデザインといい、GlassFishのデザインテイストは今ひとつわからないところがあります(笑)。さて、GlassFish ESBですが、ダウンロードすればNetBeans + GlassFish ESBのインストーラが実行可能になります。
GlassFish ESB Installer
このインストーラはどうやら、NetBeansインストーラと別の実装のようで、インストール先もNetBeansインストーラと別の場所がデフォルトとなっています。/Applications以下の整理整頓に気をつけている僕としては、このインストーラは気に入らないところがいくつかあります。まず、デフォルトインストール先がGlassFish ESBが /Applications/glassfish、NetBeansが /Applications/NetBeansです。これはインストール前に変更できるのでいいんですが、/Applications/servicetagというディレクトリが勝手に作られて servicetag-registry.xmlというファイルが一つおかれます。このファイルはSERVICE TAG IMPLEMENTATION FOR OPEN ESBを参照すると、どうやらSun Online Accountへの登録に関する情報を管理しているようです。作ってもいいけど、$HOME/Library以下におくか、せめて . (どっと)で始まるディレクトリ名にしてほしい。もう一つの不満は、インストールされたNetBeansのアイコンついていないこと。これは、インストールされたNetBeans.app/Contents/Resources/icon.icnsというシンボリックリンクが、

icon.icns -> NetBeans GlassFish ESB/{nb-cluster}/netbeans.icns

というように、{nb-cluster}というおそらくビルド時の変数が展開されていないことによるようです。とりあえずこの辺の話はOpen ESBのメーリングリストに投げてみたのでひょっとしたらそのうち直るかもしれません。
GlassFish ESB Administration console
GlassFish ESBといっても、今のところ同時にインストールされるNetBeans側に特別変化があるような感じではなく、ちょっと違いが感じられるとすればGlassFishの管理コンソール側でしょうか。左ペインのJBIフォルダ内のコンポーネントはGlassFishに比べてかなり多めです(GlassFishはsun-http-bindingとsun-javaee-engineだけ。NetBeansのSOAサポートパッケージで入れた場合はそれに加えsun-bpel-engine、sun-xslt-engine、sun-file-bindingなどが入る)。もう一つの違いはESBというフォルダがあることです。CAPS Application Configurationとありますので、Java CAPSプロジェクトがデプロイできるようになっているんでしょう。なお、Java CAPS自体はダウンロードはできないのでSunの人に言ってもらわないと使えないようですから、実際にこのフォルダがどう生きてくるかはよくわかりません。
Sun Java Enterprise System - Get Itより。

Sun Java Composite Application Suite

Note: Currently, Sun does not offer a free download of this product. Contact your local sales for details on how to download this product.

GlassFish ESB Administration console
ほかに違いで見つけたところは、Lifecycle Moduleとして、JavaEEVerifyESBというモジュールが組み込まれているところです。DescriptionではAdds Java EE verifier MBeanということなのですが用途はよくわかりません。ところで、Open ESB、GlassFish ESB、Sun ESB Suite、Java CAPSと、似たようなプロダクトがたくさんあってわかりづらいのですが、比較表がありました。
GlassFish ESB, the Open Source ESB for SOA & Integration, with commercial support by Sun Microsystems
GlassFish ESBにはSAPとかSiebel、PeopleSoft向けのアダプタやSWIFTやX12、EDIFACTのようなメッセージライブラリが付いてこないという切り分けなんですね。オープンなプロトコルのみでシステム統合するならGlassFish ESBだけでよく、プロプライエタリなプロトコルも使うならSun ESB SuiteかSun Java CAPS。さて、GlassFish ESBが今後どういう風に進歩していくかですが、個人的に注目しているのはESB Consoleというインキュベーションプロジェクトです。現在のGlassFish ESBでの管理コンソールではESBの各コンポーネント・ライフサイクル程度は管理できますが、トランザクションごとの情報や、ビジネス的な視点での管理はほとんどできません。ESB Consoleはそれらの点を補うためのプロジェクトのようです。Minimal feature listを少し引用してそれぞれみていきましょう。

  1. The unified ESB management console will provide all the features that are useful in the current Enterprise Manager.
  2. The unified ESB management console will provide an extensible management console to allow for various management features (like BPEL management, IEP management, ETL management, HTTP BC management and more) to be plugged in with drill-down capabilities. The Web Console would consist of one core web application which will accommodate other plug-ins thus making it an extensible management console to allow various management features to be plugged-in. This will allow our customers and partners to participate in the development of it by contributing certain management features.
  3. The Web Application will allow users to deploy services to a number of arbitrary server instances and to a DAS with clusters.
  4. Since Java CAPS management/monitoring capability is beyond what a typical application server would provide, these web applications could either be deployed on Glassfish, or be running outside of Glassfish.
  5. The Web Console will also provide an Intelligent Audit Dashboard(IAD).
  6. The Web Console will allow users to view various Web service performance metrics such as average response time, Transactions per Second (TPS), error count, call count, etc.
  7. The Web Console will also have charting capabilities for web service performance metrics.
  8. The Web Console will provide the ability to print relevant reports as PDF files.
  9. The Web Console will notify administrators when an Service Level Agreement (SLA) metrics cross specified thresholds.
  10. The Web Console will provide scale-out capabilities with the ability to deploy/undeploy a service or a composite application simultaneously on several servers and manage and monitor these services running on various server instances and clusters.
  11. Scaling down services like limiting the Thread pools where available on a a component basis will also be exposed so resources allocated to an engine can be limited if required.
  12. The Web Console will be able to manage and monitor JMS destinations for both STCMS and Java MQ
  13. External Plugins: The Web Console will be able to manage and monitor BPEL 2.0 business process instances, terminate instances, and drill down to instance level details with a BPEL Management & Monitoring plugin. Same goes for other types of Service Engines.
  14. The Web Console will expose Application Configuration (to configure environment specific information), Application Variables(to configure environment specific information), and support Application Verification before deployment of Composite Applications.
  15. The Web Console will provide the ability to view log activity, with the ability to define filters.
  16. All features will have access control so users can be limited only to a subset of management/monitoring features if required.
  17. Based on the alert message sent, users should be able to view the associated service unit that an alert came from. It should be possible since we have the service unit name and component name available in the alert message header, and we should be able to take the user to the associated service unit’s plug-in in the UI.
  18. For Alert Agent configuration, the administrator has to be able to propagate configurations done for one Server to multiple servers automatically.
  19. There are certain management and monitoring capabilities that are exposed through aspects/interceptors. The Web Console should expose these configurations for users to configure.

おもしろそうなところでいえば、Intelligent Audit Dashboard (IAD)でしょうか。Audit Dashboardということなので、Intelligent Event Processor (IEP)と連携して監査的な情報を出せるのかもしれません。

9月25日に日本Javaユーザグループ(JJUG)のナイトセミナーでGlassFish Night Seminarが開催されます。今回はタイトルにあるとおり「作ってみた」ですから、作ってみた結果を切り口にJavaやJRubyなど開発のトピックをご紹介していく予定です。

GlassFish で、作ってみた。

岡崎 隆之 (Glassfish ユーザ・グループ・ジャパン)

最新 GlassFish は単なる Java EE 実行環境ではなく、多彩な機能が盛り込まれた遊べるアプリケーションサーバです。
今回は開発の実演を交えながら、Java はもちろん、JRuby での開発に便利な機能をご紹介します。
この秋は、思いっきり GlassFish で遊んでみましょう!

R0027850
(写真は先月のJRubyとJythonのJJUGクロスコミュニティーセミナーの様子)