JSR 286 Portlet Specification 2.0 (PLT.1 – PLT.2)

JSR 168 から何が変わるのか、変更点をメインに確認していこう。

PLT.1.4 Other Java™ Platform Specifications

  • Java 2 Platform, Enterprise Edition, v1.4 (J2EE™)
  • Java Servlet™, v2.4
  • JavaServer Pages™, v2.0 (JSP™)
  • The Java™ Architecture for XML Binding (JAXB) 2.0

JAXB は変わらないけど、そのほかが以上のバージョンを利用するようになる。

PLT.2.5 Compatibility

JSR 168 のポートレットも動くよ、っといっている。つまり、バイナリコンパチ。

PLT.2.6 Major changes introduced with V 2.0

新機能についてはまとめてある。

  • Events – enabling a portlet to send and receive events and perform state changes or send further events as a result of processing an event.
  • Public render parameters – allowing portlets to share render parameters with other portlets.
  • Resource serving – provides the ability for a portlet to serve a resource.
  • Portlet filter – allowing on the fly transformations of information in both the request to and the response from a portlet

前からいわれていたことだね。Shared session attributes とかもあったけど、なくなっているな・・・。Public render parameters でカバーできるということなのだろうか。まぁ、そのほかは、Event は他とやりとりするイベント処理メカニズムだし、Public render parameter は他とrender parameter の共有(ウェブアプリケーションの範囲を越えられるのだろうか?)、Resource serving は、現状では、ウェブアプリ経由で画像とかにアクセスしていたのをポータル経由にする(ことだった気がする)、ポートレットフィルタはサーブレットフィルタみたいなフィルタのことね。

PLT.2.6.1 Clearifications that may make V1.0 Portlets Noncompliant

まず、ポートレットURLが 2.0 では、XMLエスケープされるとある。それに伴い、javax.portlet.escapeXml というものがあるらしい(PLT.26.7を見ろとある)。

ポートレットのparamタグで、同じ名前のparamタグを複数使った場合、配列になるとある。1.0 のときは、最後のやつが有効になるのを想定していたので、異なる動きになるようだ。

1.0 では getProtocolでnullが返ってきたけど、2.0 からは GenericServet で値を返してくるらしい。HTTP/1.1 とか。

ポートレットURLにあるパラメーターとPOSTの本文内のパラメーターがマージして取得できるようだ。(ということは、URLにパラメータを書けば得られるのだろうか・・・J2だと、jetspeed-portlet.xmlで設定すれば取得可能だけど)

PLT.2.6.3 Changes to the Programming Model

portlet.xml にxml:langでローカライズされていたものを書けていたけど、リソースバンドルにいろいろと記述できるようにしたといっている。まぁ、私的にはportlet.xmlに書けて楽だったけど、全部、リソースバンドルに移したら、移したで面倒なんだよね・・・。英語圏の人からすると、portlet.xml にごみがちらかって、嫌だったんだろうな・・・。

  • PLT.2.7 Relationship with Java 2 Platform, Standard and Enterprise Edition

Java SE 5 だといっている。まぁ、予定通り。Java SE 1.4 でも利用はできるけど、次のものができないといっている。

  • enum P3PUserInfos
  • annotations ProcessAction, ProcessEvent, RenderMode
  • generics for collections

とりあえず、今日はここまで・・・

JSR 286

Public Review になっているのでぼちぼち読まないとな・・・。以前に途中まで読んでそのままになった気が(^^; 8/21 に投票開始になっている。どうせ、Apache は反対票を入れるんだと思うけど。まだ特に PMC 宛には何も来ていないけど、意見を求められると困るから、来週中には一通り目を通すことを目指そう。時間的に微妙な気がするけど、がんばろう~。

http://jcp.org/en/jsr/detail?id=286

StringTokenizer

いまさらなのだけど、javadocみてたら、「StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.」と書いてあることに気づく・・・。こういうコメントは、太字にしてほしいのだけど・・・。知っているクラスについて、バージョンがあるごとにjavadocをじっくり読み直す暇もないし。というわけで、splitを使おうっと。