JavaOne 2010&OOW 開催 (09/19 – 09/23)
9月19日〜23日まで、サンフランシスコで JavaOne が開催されます。今年の JavaOne は Oracle になってはじめての JavaOne になるわけですが、昨年までと違い、Oracle Open World と同時開催になります。
JavaOne は朝早くから夜遅くまでセッションがあり、参加者の皆様にはとてもハードな1週間になるかと思いますが是非、新しい JavaOne を堪能してきてください。
私は大変残念ながら今年も日本で待機ですが、現地で発表された情報等をブログ、Twitter 等を通じて少しでも発信できればと思っております。日本語で Oracle Open World/JavaOne の情報を入手されたい方は下記の Twitter のリストをフォローしてください。社員が開催期間中に関連情報についてつぶやく予定です。
Oracle の社員の OOW/JavaOne レポーターリスト:
http://twitter.com/Oracle_Japan/openworld-reporters
日本からも数多くのお客様からご登録頂いておりますが、参加者の方でブログ等をお持ちの方がいらっしゃいましたら、ブログ の URL を教えていただけないでしょうか。広報より適宜、転載させていただいたりTwitterでつぶやかせていただきたいと思いますので、是非ご連絡いただければ幸いです。
ご連絡は下記のアドレスまで:
Yoshio ドット Terada アット Oracle ドット COM
また、JavaOne 参加者の皆様の中で、現地で日本人と交流を図りたい方は是非、さくらばさんにご連絡ください。現在さくらばさんが 日本から参加されるお客様のリストを下記にまとめて下さっています。
JavaOne 2010 日本からの参加者 リスト:
http://twitter.com/skrb/javaone2010
上記リストに追加して頂き、現地での情報交換に役立てて頂ければと思います。
最後に、
サンフランシスコは結構寒いと思いますので少し暖かめの服をご用意して行かれると良いかと思います。私も、過去用意していかず、あまりにも寒くて現地で服を購入した思い出があります。
それでは、参加される皆様くれぐれもお体に気をつけて行って来てください。
HTTP TRACE メソッドの無効化 on GF v3
GlassFish v3.0 の HTTP リスナーの設定はデフォルトで TRACE メソッドが有効になっています。
| $ telnet localhost 8080 Trying ::1… Connected to localhost. Escape character is ‘^]’. TRACE / HTTP/1.1 Host: localhost HTTP/1.1 200 OK Server: Oracle GlassFish Server 3.0.1 Content-Type: message/http Content-Length: 35 Date: Tue, 07 Sep 2010 08:45:33 GMT TRACE / HTTP/1.1 host: localhost |
TRACE メソッドを無効化するためには、asadmin の set サブコマンドで trace-enabled オプションを true から false に変更してください。
| $ asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=false configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=false コマンド set は正常に実行されました。 |
設定変更後、再度アクセスすると無効になっている事を確認できます。
| $ telnet localhost 8080 Trying ::1… Connected to localhost. Escape character is ‘^]’. TRACE / HTTP/1.1 Host: localhost HTTP/1.1 405 TRACE method is not allowed Allow: POST, GET, DELETE, OPTIONS, PUT, HEAD Content-Length: 0 Date: Tue, 07 Sep 2010 08:50:53 GMT |
X-Powered-By ヘッダの削除方法 on GF v3
ちょっとしたメモです。
GlassFish v3.0.x で X-Powered-By ヘッダを削除する方法を下記に示します。標準の設定で GlassFish にアクセスすると、下記のように “X-Powered-By” ヘッダが表示されます。
| $ telnet localhost 8080 Trying ::1… Connected to localhost. Escape character is ‘^]’. GET / HTTP/1.1 Host: localhost HTTP/1.1 200 OK X-Powered-By: Servlet/3.0 Server: Oracle GlassFish Server 3.0.1 Accept-Ranges: bytes ETag: W/”5147-1282383202000″ Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT Content-Type: text/html Content-Length: 5147 Date: Tue, 07 Sep 2010 08:10:51 GMT |
これはデフォルトで作成される HTTP リスナーの設定において有効化されているためです。
| $ ./asadmin get configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=true コマンド get は正常に実行されました。 |
これを無効化するためには、下記のように無効化(false)に設定してください。
| $ ./asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=false configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.xpowered-by=false コマンド set は正常に実行されました。 |
設定変更後、再度アクセスすると”X-Powered-By” ヘッダが削除されている事を確認できます。
| $ telnet localhost 8080 Trying ::1… Connected to localhost. Escape character is ‘^]’. GET / HTTP/1.1 Host: localhost HTTP/1.1 200 OK Server: Oracle GlassFish Server 3.0.1 Accept-Ranges: bytes ETag: W/”5147-1282383202000″ Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT Content-Type: text/html Content-Length: 5147 Date: Tue, 07 Sep 2010 08:19:09 GMT |
※ Server ヘッダは現時点では削除できませんが、もうすぐでできるようになるらしいです。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=6900
追記:GlassFish v3.0.1では下記のサブコマンドを実施し変更できました。
| $ ./asadmin create-jvm-options -Dproduct.name=”My Own Server” 1 オプションを作成しました コマンド create-jvm-options は正常に実行されました。 $ ./asadmin restart-domain domain1 ドメインは正常に再起動されました コマンド restart-domain は正常に実行されました。 |
ドメインを再起動した後、再度アクセスして確認してください。
| $ telnet localhost 8080 Trying ::1… Connected to localhost. Escape character is ‘^]’. GET / HTTP/1.1 Host: localhost HTTP/1.1 200 OK Server: My Own Server Accept-Ranges: bytes ETag: W/”5147-1282383202000″ Last-Modified: Sat, 21 Aug 2010 09:33:22 GMT Content-Type: text/html Content-Length: 5147 Date: Thu, 09 Sep 2010 01:58:41 GMT |
Java EE 6 & GlassFish v3 の概要
先日開催した、ダイセミの発表資料を公開します。
ここに書いたように、プレゼン発表をする際に原稿をおこすことは殆どないのですが、ダイセミはいつもの人前でのプレゼンと違い、目の前のパソコンに向かって説明を行うので、私としてはとてもやり辛いプレゼン環境です。そこでダイセミ用には原稿を作成しておりました。(以前のJavaSEの時もダイセミ用には原稿を作成しました。)
せっかく文章を作成しており、これを捨てるのももったいないので、原稿をそのままここに掲載します。自分の発表用の元ネタとして作成しているので口語表現でおかしな部分もあるかと思いますが、プレゼンをめくる際に、この原稿を読み進めていただければわかりやすいかと思いますので、どうぞご活用ください。
Page 1
************************************************************
今日は、GlassFishで実感、エンタープライズ Java の進化と題してJava EE 6 と GlassFish v3 の新機能をそれぞれ紹介したいと思います。資料が若干多いため足早に説明をしますが1時間程どうぞ宜しくお願いします。
************************************************************
Page 2
************************************************************
本日のアジェンダは下記のような流れで進めたいと思います。
************************************************************
Page 3,4
************************************************************
はじめに、もう一度 Java EE を見直してみませんか?
************************************************************
Page 5
************************************************************
Java EE の開発にこのようなイメージを持っていませんか?Java EE は XML の設定が困難、設定が膨大、パッケージも面倒、動作させるアプリケーションサーバも重い。。。。。
************************************************************
Page 6
************************************************************
皆様、もし今このようなイメージをお持ちでしたら、そのイメージを是非一新してください。今日、皆様にお伝えしたいメッセージはこのページに凝縮されていいます。Java EE 6 になり Java EE 5 から比べてもさらに簡単開発が進化しました。また、Java EE 6 のアプリケーションの動作環境であるアプリケーションサーバ、GlassFish v3はとても簡単ですし、とても軽量です。もう Tomcat を使う必要はどこにもありません。さらに、今年の年末にリリース予定の GlassFish v3.1 はクラスタ機能を持ち本番環境向けの機能も提供します。
************************************************************
Page 7
************************************************************
さて、それでは実際にそれぞれの概要について説明していきたいと思います。まず、始めに Java EE 6 の概要を紹介します。Java EE 6 は昨年末に正式リリースされました。
************************************************************
Page 8
************************************************************
まず、Java EE 6 のテーマについて紹介します。今回は時間の関係上 JavaEEに含まれる全ての機能/仕様を紹介することはできません。これらの中から重要となるポイントだけをピックアップして紹介して行きたいと思います。
テーマはここに記載するように、拡張性、プロファイル対応、Pruning、より進んだかんたん開発の4点が挙げられます。
************************************************************
Page 9
************************************************************
拡張性についてですが、Servlet 3.0 や JSF 等においては設定ファイルの記載がオプション化され、それぞれ設定ファイルで記載してた内容をプログラミング上でアノテーションを使用して記載する事が
できるようになりました。また仮に web.xml の設定をした場合でもweb.xml の内容が巨大化して可読性が悪くなった場合、各フレームワーク毎に設定ファイルを分け web-fragment.xml を記載し設定ができるようになったため、拡張性が高くなりフレームワーク管理が容易になりました。
************************************************************
Page 10
************************************************************
続いてプロファイルですが、Java EE 6 から新たにプロファイルと呼ばれる概念が導入されました。これは Java EE の全ての機能を提供するのではなく必要な技術を用途に応じて選択し、全ての Java EE の機能のサブセットを提供する事ができるようになりました。例えば、将来的には電話会社向けのプロファイルといった物も提供されるかもしれません。
今回、Java EE 6 のリリース時に最初に提供されるプロファイルはこちらに記載した2点になります。一つは Web プロファイルで、 Web の開発に特化した物、そして Enterprise Platform と呼ばれる、今までと同じJava EE のフルセットを提供するものが用意されています。
************************************************************
Page 11
************************************************************
Web プロファイルについて、含まれる技術をこちらに記載しています。この中に含まれるものは、基本的な Web アプリケーション開発に必要とされる技術だけをピックアップした物です。 この中に EJB Lite と記載していますが、これも EJB の全ての機能ではなく一部の機能だけを含むものです。例えば、EJB Lite にはメッセージドリブンビーン等は含まれません。Java EE の全てではなく Web の開発に特化したサブセットだと認識してください。
このプロファイルの導入メリットは不必要な機能を含まない事により無駄なリソースを消費しなくて済むといったメリット等があります。
************************************************************
Page 12
************************************************************
続いて、Pruning について紹介します。Java EE 6 で初めて仕様の削減を行う事が計画されました。今まで、Java EE は巨大化の一歩をたどって来た歴史がありますが、ここで仕様として古くなった物、使われなくなった API を整理し新しく置き換わった仕様があれば、そちらに移行して頂くようにこのような取り組みを行っています。例えば、JAX-RPC は JAX-WSへ Entity Bean は JPA と便利で扱い易くなった仕様へ移行していただく事を推奨します。
ただし、いきなり使えなくすると既存のアプリケーションに対して非常に大きな影響がでます。ですので、影響を極力すくなくするため、まずは削減候補をオプション化し、さらに次のバージョンで削除するという2段階のプロセスを経て削除するという安全策が講じられております。
現時点で、削減候補の仕様を多用されているお客様は削減候補となった仕様に置き換わる技術への移行をおすすめ致します。
************************************************************
Page 13
************************************************************
続いて Servlet 3.0 について紹介します。Servlet 3.0 は JSR-315 で仕様が制定されましたが、特徴としてここに挙げるようなポイントがあります。中でもマルチパート対応としてファイルがアップロードできる機能が標準仕様に盛り込まれた他、非同期 Servletを実装する事ができるようになったため、Comet等で実現していた Server Push の技術を Servlet で実現できるようになりました。
重要なポイントは、Java SE 5 の言語仕様で追加されたアノテーションベースの宣言的プログラミングモデルを採用し、ジェネリクス等を扱い型の安全性等も強化された点が挙げられます。
************************************************************
Page 14
************************************************************
Servlet 3.0 で指定可能なアノテーションをこのページに記載します。プログラム上でアノテーションを記載した場合でも設定を上書きしたい場合は、web.xml に記載する事で上書きができます。
************************************************************
Page 15
************************************************************
このページでは実際の Servlet 3.0 のサンプルコードを記載しています。この例の赤文字の部分に記載したように、Servlet 2.5 までは web.xml に記載していた内容をプログラム上で記述する事ができるようになっています。
************************************************************
Page 16
************************************************************
続いて、EJB 3.1 について紹介します。EJB 3.1 は JSR-318 で制定されました。
特徴は、こちらに示すようなポイントが挙げられます。EJB 3.1 の個々の特徴に関する詳細は最後に紹介する参考 URLの私のブログで参照して頂ければと思います。
************************************************************
Page 17
************************************************************
ここでは、EJB 3.1 の内便利になった機能を紹介します。その1つはパッケージングが簡略化された事です。今まで EJB は ear ファイルにまとめたり、web 関連モジュールは war にまとめたりとパッケージングするのがとても面倒でした。
************************************************************
Page 18
************************************************************
EJB 3.1 からはパッケージングがとても簡単になり、EJB クラスも単一の war ファイルへ含める事が可能になりました。もちろん今までのようにパッケージングして頂いても問題はございません。また、配備記述子もオプション化されたため、開発者にとっての負担が大幅に軽減されています。
************************************************************
Page 19
************************************************************
また、EJB 3.1 から EJB 3.1 Lite と呼ばれるサブセットを提供しWeb Profile で利用できるようになっています。ここに記載されているようにLite に含まれる機能だけで十分な場合は、Web Profile 版を利用する事ができます。一方、MDBやタイマーサービス等 Full に含まれる機能を利用したい場合は、Enterprise Platform 版を利用してください。
このようにニーズに応じて不要な物を含ませない事ができるようになったのは、Java EE 6 の特徴の一つです。
************************************************************
Page 20
************************************************************
続いて、Bean Validation について紹介します。この仕様は、JSFとJPAに統合されており、ManagedBeanやEntityクラス内で利用することができます。JSFとの統合では、たとえば、コンポーネントに対するバリデーションの結果、メッセージをJSFコンポーネント内に表示させることも可能です。
これらのバリデーションもアノテーションを使用して簡単に記述する事ができます。また、すでに提供されているバリデーション以外にも、カスタムバリデーターを作成することもできます。
たとえば、Emailアドレスの記載内容をチェックするカスタムバリデータを独自に作成することができます。
************************************************************
Page 20
************************************************************
続いて、JPA 2.0 について紹介します。Java Persistence API 通称 JPA はJava EE 5 では EJB 内に含まれていましたが、JPA 2.0 からは Java SE 内からも利用ができるように、仕様が独立しました。JPA 2.0 で提供される機能は基本的には JPA 1.0 プラスα、なのですが、これは実際に JPA 1.0 を使用しているお客様からのフィードバックの元に追加された便利な機能を含んでいます。例えば Entity クラスの作成方法によってより柔軟なデータベーステーブルのモデリングができるようになった他、SQL 分ライクな JPQL についても新しい構文が追加されております。
その他便利な機能が多く含まれますので、こちらも別途私のブログに詳細に記述したプレゼンを用意していますので、ご参照ください。
************************************************************
Page 21
************************************************************
今日は、JPA 2.0 で追加された新機能の内 Criteria API をご紹介します。JPA 1.0 では JPQL という SQL 分ライクな文字列を記載して データベースのクエリーを実行するしか方法はありませんでしたが、Criteria API はJPQL の代わりにプログラミング上でクエリを記載する事ができるようになりました。
文字列で記載する場合、クエリ文字列の記載ミス等があった場合、プログラミング中にはそのミスには気付かず、実行時に初めてランタイムエラーが発生しミスに気付きます。
開発時において、もしくは運用時も実行しなければエラーに気付かないのは非常に危険です。このようなランタイムエラーを極力さける事ができるのがCriteria API と Metamodel API の併用です。全てのデータベースに対するクエリーを Java プログラムだけで記載できるため、コンパイル時もしくは、統合開発環境が開発時にエラーを教えてくれます。そこで、ランタイムエラーが発生する前にミスに気付く事ができとても便利です。
************************************************************
Page 23
************************************************************
次は JSF2.0です。
JSF2.0の特徴ですが、大きなところで、Faceletsが採用され点があげられます。このため、JSPに代わりXHTMLによるビューの記述ができるようになりました。またこれにより、テンプレートの作成も簡単にできるようになりました。
また、かんたん開発の一環として、faces-config.xmlがオプション化されました。ManegedBeanをアノテーション化したり、JSFの各ページ間のナビゲーションを改良し、ボタンやリンク名からXHTMLファイル名をマッピングするようになりました。
その他、リソースフォルダを標準化したり、Ajax対応/ブックマーク可能なURLなどの機能が追加されています。
************************************************************
Page 24
************************************************************
最後にDIについて紹介します。従来のDIに追加して、CDIという機能が追加されました。これは、CDI: Context and Dependency Injection for Java EE の略で、当初はJSR299でWebBeansという名称で仕様作成されていました。CDIでは、Java EE 5よりもより汎用的にDIを利用することができるようになっています。
新たなアノテーションとして、@Injectで注入するフィールドを定義します。また、独自のインジェクションポイントを自由に定義することも可能です。
CDIでは、EJB SssionBeanやJSFのManagedBean、CDIコンテナがモジュール内で見つけたBeanクラスをInject対象とすることができます。このCDI機能は、起動時のクラスロードによる負荷があるため、デフォルトでは無効となっております。有効かするためには beans.xmlというファイルを定義し有効化されます。beans.xmlは空のファイルでもかまいません。
以上で、足早に、Java EE6 の新機能について紹介してきましたが、いずれの機能もよりかんたん開発をめざして改良が施されておりますので、Java EE は理解するのも難しい、コーディングするのも難しい、パッケージングするのも大変等といった過去の悪しきイメージは取り除いていただき、今一度このかんたんになった Java EE 6 を是非試して頂ければと思います。
************************************************************
Page 25, 26
************************************************************
続いて、GlassFish v3 について概要を紹介しますGlassFish v3 は Java EE 6 の参照実装で世界で初めてJava EE 6 の仕様に完全に準拠したサーバとして提供しております。
このアプリケーションサーバは、非常に軽量で起動もとても高速です。また、Java EE 6 のプロファイルに対応し、Web Profile 版、Enterprise Platform 版のそれぞれを提供しています。
過去のバージョンに比べ、アーキテクチャも刷新され、OSGi のモジュールサブシステムが新たに導入されました。
簡単な操作という観点では、インストールも zip 版を提供しているのでunzip するだけですぐ使える環境を用意することもできます。
また、あらたに JRockit Java VM を正式サポートするようになりました。
************************************************************
Page 27
************************************************************
起動時間が高速という事なのですが、これは実際にインストールして試して頂きたいのですが、私が普段使用している Mac OS/Xでは約4秒程でアプリケーションサーバが起動します。非常に軽量なコンテナで、アプリケーションサーバは重いというイメージを払拭するサーバです。
開発時にはアプリケーションサーバを頻繁に再起動する場合がありますが、このアプリケーションサーバは非常に高速で起動/再起動ができますので開発時の待ち時間を大幅に減少する事ができます。また運用時においても再起動による待ち時間を大幅に減少する事ができます。
************************************************************
Page 28
************************************************************
かんたん開発では、今世の中で有名な統合開発環境はサポートしており、統合開発環境と連携して開発がとても楽になります。
************************************************************
Page 29
************************************************************
また、これは GlassFish が持つ機能なのですが、アプリケーションの再配備の時に以前のセッションを保持したまま再配備ができる機能を提供していますので、アプリケーション開発においては非常に便利です。例えばログインをするようなアプリケーションを構築している場合、ある一部を修正して再配備するだけで、もう一度ログインから行わなければなりませんでしたがセッションを持続するおかげで再ログインする必要がなくなります。
************************************************************
Page 30
************************************************************
また、かんたんな管理機能として Web ブラウザからアクセスできる GUI の 管理画面を用意していますので、直感的に理解しやすいインタフェースを利用して簡単に管理を行う事ができます。その他、v3 から RESTful インタフェースを利用した管理もできるようになっています。
************************************************************
Page 31
************************************************************
つづいて、GlassFish は非同期 I/O に対応したサーバとして実装されております。
今までの Web Server/Application Server はマルチスレッドの同期I/O(Blocking I/O)として実装された物が主流でした。
同期 I/O 型のサーバの処理内容を左の絵を使って説明します。仮にサーバがスレッドプール内に3つのスレッドを保持している状態で、同時に5個のリクエストが来た事を想定してください。この時各処理はリクエスト毎にブロックされているため、残り2つのリクエストはキューに溜まったままになり、他のスレッドの処理が終わらないと処理する事ができません。これを右側の非同期 I/O のサーバを使った場合、各処理をブロックしないで処理ができるので少ないスレッドで数多くのリクエストを
さばく事ができるようになります。
リクエスト数が少ない場合は、マルチスレッド型のサーバの方がパフォーマンスがよいですが、リクエスト数が多くなればなる程、非同期 I/O の方がパフォーマンスがよくなります。
************************************************************
Page 32
************************************************************
続いて、GlassFish のアーキテクチャについて紹介します。今日は、詳細を説明する事はできませんが、OSGi のモジュールサブシステム上でアプリケーションサーバが動作している事をご理解ください。
このOSGi モジュールサブシステム導入のメリットは、アプリケーションサーバを再起動する必要がなく、追加モジュールをアプリケーションサーバに追加できたりもしくは不要になった機能を停止/削除する事ができるようになる点です。
また、OSGi の導入により GlassFish 自身を利用者の皆様のご自身でご自由に拡張できるようになったのも一つのポイントです。
GlassFish では自由に拡張できるように、管理機能を拡張したい開発者のためにAPI を公開していますので、拡張可能なアプリケーションサーバといえます。
************************************************************
Page 33
************************************************************
次に 組み込み可能コンテナについて紹介します。GlassFish の組み込み可能コンテナの機能を使って
GlassFish の持つ機能を、他の Java アプリケーションから利用できるようになりました。
例えば、GlassFish をインストールしたり設定せずに、GlassFish のライブラリをコピーするだけで、自分が独自に作成した Javaアプリケーション内でGlassFish の Web サーバ機能を使ったり、内部的にアプリケーションをデプロイして GlassFish のドメイン管理機能を使わずに限定したサービスだけを提供する事もできます。
また、開発時に有効なのは、EJB のテストが非常に楽になる点です。今ままで EJB の単体テストを行う際には、作成した EJB を一度アプリケーションサーバにデプロイした後、リモートからアクセスする等してテストを行っていたかと思います。
しかし、組み込みコンテナを使うと、JUnit のテストコード中でコンテナを起動させ同一 JavaVM のプロセス内で EJB のテストを行う事ができるようになりEJB の単体テストが大幅に楽になります。
************************************************************
Page 34
************************************************************
JUnitのテストコードのサンプルを記載します。赤文字で記載したように、プログラム中で EJB コンテナを起動し、JNDI のルックアップだけでテストができるようになりとても便利です。
以上で GlassFish v3.0 の概要説明は終わりです。
************************************************************
Page 35
************************************************************
最後に GlassFish の今後について若干触れておきたいと思います。
************************************************************
Page 36
************************************************************
今後についてですが、
まず、GlassFish v3.1 というものが今年の年末にリリースされる予定です。これは、複数台のマシンで稼働/管理ができるクラスタ機能を持つものでまた高可用性機能も提供する予定です。また Coherence にも対応する予定です。
次に、来年以降 v3.2 で v3.1 に対する改良版を提供する予定です。このバージョンでは次期 Java EE の 7 のアーリアクセス機能も提供する予定です。
最後に、GlassFish v4 では Java EE 7 に対応した物をリリースする予定です
************************************************************
Page 37
************************************************************
GlassFish v3.1 ではクラスタ対応がメインの機能ですが、その他、HTML5のWebSocket 対応等も含まれます。
************************************************************
Page 38
************************************************************
次に、GlassFish v3.1のクラスタ機能を紹介したいのですが、その前に既存の v2.1 のクラスタ機能についてかんたんに紹介します。v2.1 では分散されたマシン上にノードエージェントと呼ばれるエージェントプロセスを必ず導入する必要がありました。このノードエージェント経由でサービスの起動/停止等のライフサイクルの管理を行っていました。
************************************************************
Page 39
************************************************************
一方、GlassFish v3.1ではノードエージェントの代わりに 各マシン上で SSHD のデーモンプロセスを起動し SSH 経由でサービスの起動/停止等を行うように変更されました。これにより以前にくらべ軽量に命令を実行させる事ができるようになります。
************************************************************
Page 40
************************************************************
最後に、ざっと GlassFish の特徴について紹介します。
後ほど、私のブログで本資料を公開しますので、詳細は後ほどご確認ください。
************************************************************
Page 41
************************************************************
参考情報は下記の通りです。
私のブログの URL はここに記載している yoshio3.com になります。
************************************************************
Page 41
************************************************************
まとめます。
Java EE 6 でさらに簡単開発がすすみました。XML による設定ファイルの編集はすくなくなりました。また、組み込みコンテナを使って EJB の単体テストも簡単になります。また、GlasssFIsh はとても軽量です。インストールもとても簡単です。Tomcat をまだ使っている方は是非 GlassFish を試してみてください。
今後でてくる GlassFish ではクラスタ機能も提供する予定です。
以上で本日の私からの発表は以上です。
どうもご清聴ありがとうございました。
************************************************************
夏休み!!
ちょっと、現実逃避です。
先週、忙しかった仕事も一段落したので、先週の金曜日に有給取得(夏休み)して1泊2日で福島に行ってきました。今週の木・金も夏休みを頂く予定です。もう暦的には夏も終わりかぁ。(まだまだ暑いけど。)




さて仕事、仕事。
SHA-2 対応の iPlanet Web/Proxy Server
たまに、ご質問が来るのでメモがてら HowTo を書いておきます。
iPlanet Web Server 7.0/Proxy Server 4.0.x は下記の暗号化アルゴリズムに対応しています。
– RSA 2048bit
– 3 key triple DES
– AES
– SHA-2
詳細を申し上げると、Web Server/Proxy Server は証明書管理に NSS ライブラリを内部的に使用していますが、NSS 3.11 バージョンで上記の暗号化アルゴリズムに対応しています。
http://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html
例えば、Web Server 7.0 は NSS 3.12.5(以上)を使用しており、上記 URL 中に含まれる暗号化アルゴリズム全てサポートしております。これらのアルゴリズムに対応した証明書を作成するためには下記のようにインストールディレクトリ配下に存在する certutil コマンドを使用して証明書を作成し対応する事ができます。
下記の例では、SHA-256/RSA 2048 に対応した証明書を作成しています。
1.CSR の作成例:
# cd /sun/webserver7/https-sw-103/config/ # ../../bin/certutil -R -s "CN=sw-103-3.japan.sun.com,OU= Software Practice,O=Sun Microsystems,L=Setagaya,ST= Tokyo,C=JP" -p "03-5717-5000" -a -o /tmp/SHA256.csr -k rsa -g 2048 -v 12 -d /sun/webserver7/https-sw-103/config -Z SHA256 A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments... |
ここで下記のようなPEM形式のファイルが作成されます。
| # vi /tmp/SHA256.pem —–BEGIN NEW CERTIFICATE REQUEST—– MIICzjCCAbYCAQAwgYgxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzERMA8G^M A1UEBxMIU2V0YWdheWExGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxGjAYBgNV^M BAsTEVNvZnR3YXJlIFByYWN0aWNlMR8wHQYDVQQDExZzdy0xMDMtMy5qYXBhbi5z^M dW4uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9ej3zBS1dPHf^M /N4qB9DE+2m0vZ8QInClzhkknChIO5kYuobLtg9mu1CAAZGcQ0QXj7/W/QGSpR6/^M OMSHMV8o3hAVsxcg4mdXAPGfs4M36gMgkPwhSMDOzG6HGnZPRTRxrWf0Bpoo6SQY^M 1a+jar5N5CTk1NAfeAfWRKdPVjlbl88bMgQTUsODy7WluuNAMiXABX4nGNYd43c5^M pwxyoFq8jx73u1TErTnZw477lHh28FnRy1+AxnZzQQzqZuQ13hBi3V8+OLNd7jcz^M +CMgT0TxDjbQLIHHGAeIWIC7bBCx2Ifr7vyCZvb9zueJtyeyww6sOF3lXPEvkIBV^M qpgVvlE2BwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAE23QsCAFPF8j1BC4KKY^M pqgchXFB+I/Hs9v/CpdFmkKEPcgMdPwJiXkxC0Y8j2HYbmZfqlGzunGyayxEwuGR^M ImL+kMDriiZQervFumt82e8o5msIB05+PHLFXwpQZ6nlLKeliQIhP3owuA/3Y+TZ^M 1HICMRVLncS9f9y8+Xt7US1k24+GhhiGZrXx0KyXbDLa41YqQdRBNNSHN8LTHXsW^M 9l/oH/LbJUTeGaSy6x1AKzDY5MrKF7P4cV8I/D5GXIUwt2st/JWCF0rOkDmPdw0W^M 2JNgH2uxne/madJ3YRuzN3pTF1Yljk/FHgoN9KeSElUOXYkDssvj8AGf9wVE0cGW^M BOo= —–END NEW CERTIFICATE REQUEST—– |
| # openssl asn1parse -inform PEM -i -in /tmp/SHA256.pem 0:d=0 hl=4 l= 718 cons: SEQUENCE 4:d=1 hl=4 l= 438 cons: SEQUENCE 8:d=2 hl=2 l= 1 prim: INTEGER :00 11:d=2 hl=3 l= 136 cons: SEQUENCE 14:d=3 hl=2 l= 11 cons: SET 16:d=4 hl=2 l= 9 cons: SEQUENCE 18:d=5 hl=2 l= 3 prim: OBJECT :countryName 23:d=5 hl=2 l= 2 prim: PRINTABLESTRING :JP 27:d=3 hl=2 l= 14 cons: SET 29:d=4 hl=2 l= 12 cons: SEQUENCE 31:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 36:d=5 hl=2 l= 5 prim: PRINTABLESTRING :Tokyo 43:d=3 hl=2 l= 17 cons: SET 45:d=4 hl=2 l= 15 cons: SEQUENCE 47:d=5 hl=2 l= 3 prim: OBJECT :localityName 52:d=5 hl=2 l= 8 prim: PRINTABLESTRING :Setagaya 62:d=3 hl=2 l= 25 cons: SET 64:d=4 hl=2 l= 23 cons: SEQUENCE 66:d=5 hl=2 l= 3 prim: OBJECT :organizationName 71:d=5 hl=2 l= 16 prim: PRINTABLESTRING :Sun Microsystems 89:d=3 hl=2 l= 26 cons: SET 91:d=4 hl=2 l= 24 cons: SEQUENCE 93:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 98:d=5 hl=2 l= 17 prim: PRINTABLESTRING :Software Practice 117:d=3 hl=2 l= 31 cons: SET 119:d=4 hl=2 l= 29 cons: SEQUENCE 121:d=5 hl=2 l= 3 prim: OBJECT :commonName 126:d=5 hl=2 l= 22 prim: PRINTABLESTRING :sw-103-6.japan.sun.com 150:d=2 hl=4 l= 290 cons: SEQUENCE 154:d=3 hl=2 l= 13 cons: SEQUENCE 156:d=4 hl=2 l= 9 prim: OBJECT :rsaEncryption 167:d=4 hl=2 l= 0 prim: NULL 169:d=3 hl=4 l= 271 prim: BIT STRING 444:d=2 hl=2 l= 0 cons: cont [ 0 ] 446:d=1 hl=2 l= 13 cons: SEQUENCE 448:d=2 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption 459:d=2 hl=2 l= 0 prim: NULL 461:d=1 hl=4 l= 257 prim: BIT STRING |
2.CA (認証局)で証明書を署名(下記では OpenSSL で実施)
| # cd /usr/local/ssl/ # ./bin/openssl ca -config openssl.cnf -md sha256 -in /tmp/SHA256.pem -keyfile ./demoCA/private/cakey.pem -cert ./demoCA/cacert.pem -out /tmp/server-cert.pem Using configuration from openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
ca:e6:f8:42:ea:f0:0f:03
Validity
Not Before: Nov 4 13:55:36 2009 GMT
Not After : Nov 4 13:55:36 2010 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Sun Microsystems
organizationalUnitName = Software Practice
commonName = sw-103-3.japan.sun.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
22:44:52:54:19:7C:BD:F2:E1:2D:C7:6F:A7:67:D3:9D:78:89:67:F0
X509v3 Authority Key Identifier:
keyid:CA:75:35:41:9F:75:59:7D:7B:30:B0:60:4E:CA:A2:EF:BC:25:5D:BA
Certificate is to be certified until Nov 4 13:55:36 2010 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
|
3.署名済みのサーバ証明書の内容確認
# more /tmp/server-cert.pem Certificate:
Data:
Version: 3 (0x2)
Serial Number:
ca:e6:f8:42:ea:f0:0f:03
Signature Algorithm: sha256WithRSAEncryption
(署名アルゴリズム)
Issuer: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice, CN=Foo Bar/emailAddress=foo@Sun.COM
Validity
Not Before: Nov 4 13:55:36 2009 GMT
Not After : Nov 4 13:55:36 2010 GMT
Subject: C=JP, ST=Tokyo, O=Sun Microsystems, OU=Software Practice, CN=sw-103-3.japan.sun.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:f5:e8:f7:cc:14:b5:74:f1:df:fc:de:2a:07:d0:
c4:fb:69:b4:bd:9f:10:22:70:a5:ce:19:24:9c:28:
48:3b:99:18:ba:86:cb:b6:0f:66:bb:50:80:01:91:
9c:43:44:17:8f:bf:d6:fd:01:92:a5:1e:bf:38:c4:
87:31:5f:28:de:10:15:b3:17:20:e2:67:57:00:f1:
9f:b3:83:37:ea:03:20:90:fc:21:48:c0:ce:cc:6e:
87:1a:76:4f:45:34:71:ad:67:f4:06:9a:28:e9:24:
18:d5:af:a3:6a:be:4d:e4:24:e4:d4:d0:1f:78:07:
d6:44:a7:4f:56:39:5b:97:cf:1b:32:04:13:52:c3:
83:cb:b5:a5:ba:e3:40:32:25:c0:05:7e:27:18:d6:
1d:e3:77:39:a7:0c:72:a0:5a:bc:8f:1e:f7:bb:54:
c4:ad:39:d9:c3:8e:fb:94:78:76:f0:59:d1:cb:5f:
80:c6:76:73:41:0c:ea:66:e4:35:de:10:62:dd:5f:
3e:38:b3:5d:ee:37:33:f8:23:20:4f:44:f1:0e:36:
d0:2c:81:c7:18:07:88:58:80:bb:6c:10:b1:d8:87:
eb:ee:fc:82:66:f6:fd:ce:e7:89:b7:27:b2:c3:0e:
ac:38:5d:e5:5c:f1:2f:90:80:55:aa:98:15:be:51:
36:07
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Cert Type:
SSL Server
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
22:44:52:54:19:7C:BD:F2:E1:2D:C7:6F:A7:67:D3:9D:78:89:67:F0
X509v3 Authority Key Identifier:
keyid:CA:75:35:41:9F:75:59:7D:7B:30:B0:60:4E:CA:A2:EF:BC:25:5D:BA
Signature Algorithm: sha256WithRSAEncryption
(拇印アルゴリズム)
58:82:fd:e4:90:d6:44:dc:e9:77:77:fb:f0:72:f1:cf:92:2d:
58:27:a9:38:c9:cd:b7:6c:8a:f9:32:ae:d1:f3:da:04:80:ee:
a0:6f:24:bd:6b:e5:6a:56:29:0c:dc:bf:4d:08:14:75:5a:e4:
31:a3:72:bd:d4:f6:08:ad:0f:5f:27:fa:76:26:0f:7b:34:8c:
58:8d:ab:a4:f7:2c:5e:93:73:93:39:20:f1:49:6f:2a:3c:74:
11:b8:b7:96:70:65:9a:2d:03:27:61:bb:80:97:49:ef:08:85:
99:b3:ed:43:bc:11:0e:09:8c:ac:35:c5:96:3f:ff:04:2d:23:
e9:48
-----BEGIN CERTIFICATE-----
MIIDmjCCAwOgAwIBAgIJAMrm+ELq8A8DMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYD
VQQGEwJKUDEOMAwGA1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3Rl
bXMxGjAYBgNVBAsTEVNvZnR3YXJlIFByYWN0aWNlMRYwFAYDVQQDEw1Zb3NoaW8g
VGVyYWRhMSQwIgYJKoZIhvcNAQkBFhVZb3NoaW8uVGVyYWRhQFN1bi5DT00wHhcN
MDkxMTA0MTM1NTM2WhcNMTAxMTA0MTM1NTM2WjB1MQswCQYDVQQGEwJKUDEOMAwG
A1UECBMFVG9reW8xGTAXBgNVBAoTEFN1biBNaWNyb3N5c3RlbXMxGjAYBgNVBAsT
EVNvZnR3YXJlIFByYWN0aWNlMR8wHQYDVQQDExZzdy0xMDMtMy5qYXBhbi5zdW4u
Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9ej3zBS1dPHf/N4q
B9DE+2m0vZ8QInClzhkknChIO5kYuobLtg9mu1CAAZGcQ0QXj7/W/QGSpR6/OMSH
MV8o3hAVsxcg4mdXAPGfs4M36gMgkPwhSMDOzG6HGnZPRTRxrWf0Bpoo6SQY1a+j
ar5N5CTk1NAfeAfWRKdPVjlbl88bMgQTUsODy7WluuNAMiXABX4nGNYd43c5pwxy
oFq8jx73u1TErTnZw477lHh28FnRy1+AxnZzQQzqZuQ13hBi3V8+OLNd7jcz+CMg
T0TxDjbQLIHHGAeIWIC7bBCx2Ifr7vyCZvb9zueJtyeyww6sOF3lXPEvkIBVqpgV
vlE2BwIDAQABo4GPMIGMMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMCwG
CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNV
HQ4EFgQUIkRSVBl8vfLhLcdvp2fTnXiJZ/AwHwYDVR0jBBgwFoAUynU1QZ91WX17
MLBgTsqi77wlXbowDQYJKoZIhvcNAQELBQADgYEAWIL95JDWRNzpd3f78HLxz5It
WCepOMnNt2yK+TKu0fPaBIDuoG8kvWvlalYpDNy/TQgUdVrkMaNyvdT2CK0PXyf6
diYPezSMWI2rpPcsXpNzkzkg8UlvKjx0Ebi3lnBlmi0DJ2G7gJdJ7wiFmbPtQ7wR
DgmMrDXFlj//BC0j6Ug=
-----END CERTIFICATE-----
|
4.署名済みサーバ証明書のインポート
最後に署名された証明書を Web Server のキーストアにインポートします。次に、Web Server の HTTP リスナーの設定時に指定したニックネーム(Server-Cert)を指定すれば設定が完了です。
| # certutil -A -n Server-Cert -t “u,u,u” -i /tmp/server-cert.pem -d /sun/webserver7/https-sw-103/config |
Proxy Server もほぼ同様の方法で対応が可能です。
先進的アプリケーションサーバ GlassFish v3 のご紹介
本日の Oracle Sun Technology Update イベントで発表時に使用したファイルを公開します。
今日の発表はGlassFish v3 の概要ではなく、一歩踏み込んだアーキテクチャ紹介(モジュールサブシステム)等を行いました。GlassFish v2 からさらに進化した GlassFish v3 を是非ご覧ください。
Java とはなんぞや?Oracleダイセミ発表資料公開
先日、オラクルのダイレクトセミナーで Java に関する超入門を発表しました。普段は EE 周りしか人前で話をすることはないですし、また今更ながらの Java とはなんぞや的なネタだったので、普段とは異なり少し緊張しながら発表しました。
プレゼン資料は、Java の過去の歴史から現在までを写真を交えながら説明しているので、まさしく初学者にとって Java って何?を理解するにはよいかもしれません。
ちなみに、この資料は元 Sun の Java エバンジェリスト山口浩さんが以前作成された資料を元に作成しています。山口さんありがとうございます。
PS.
さて、目黒雅叙園のイベントが明日に迫りましたがご安心ください。発表用の原稿は既にできて提出しています。Twitter でもつぶやきましたが、明日の発表は GlassFish v3 の概要的な紹介は少なく、もう少し踏み込んだ GlassFish のアーキテクチャやモジュールサブシステム(OSGi/HK2)の紹介、また GlassFish がモジュールサブシステム上で動くメリット、v3 のGrizzly の振る舞い等を説明する予定です。
また v3.1 の機能についても若干説明する予定です。
どうぞお楽しみにしてください。
追記:(8/20)
************************************************************
櫻庭さんからP27のヒープ領域についてご指摘をいただきました。P 27 のNew領域に Eden領域とFrom/Toを記載していますが、Eden領域を記載したのであれば、From/Toを記載するのではなく、Suvivor領域と記載すべきでした。
櫻庭さん適切なご指摘をいただきましてありがとうございました。
************************************************************
週末の散歩(横浜:第25回神奈川新聞花火大会)
この週末は久しぶりにカメラを持って散歩に行ってきました。日曜日に横浜の花火大会が開催されるという事で、午後2時位に家を出て横浜の赤レンガ倉庫で花火を見てきました。
午後2時位はまだ場所も空いていたので芝生のある位置をゲットし後はあの暑い炎天下の中をひたすら待ちつづけました。
夏の風物詩の花火はやっぱりいいですね。今回三脚を持って行かず(花火撮るのに持って行かないのは明らかに NGなのは知っているのですが、荷物が多くて。。)手持ちで撮ったので案の定手ぶれだらけですが、いくつかまぁ、なんとか見れるのが撮れたので記念にアップしました。
今年の夏は本当に暑いので皆様も夏バテしませんように。









mediacast.sun.com 7/29 に閉鎖
http://mediacast.sun.com/ のサイトが US 時間の 7/29で完全閉鎖されるようです。
私のブログからもこのサイトへ数多くのコンテンツをアップロードしていますが、僅々で資料、サンプル等が必要な方は今すぐダウンロードの程宜しくお願いします。
別途ファイルのアップロード先等が決まれば、そちらへ張り替える予定ですが、現時点でどこへアップすべきか私が分かっていないので、7/29 以降は mediacast のコンテンツは入手できなくなります。
過去に私が作成した資料へのリンク
どうぞ宜しくお願いします。
PS.
私が mediacast にアップした資料の中ではGrizzly のプレゼン資料が最もダウンロードされているようでした。
mediacast には海外のエンジニアも有用な情報を数多くアップしているので、このようなサイトが無くなるのはとても残念です。自動でどちらかにマージしてくれれば良かったんですけどね。

