6

ポートレットを「JSR-286準拠」と「JSR-168準拠」のみにする理由の簡潔な要約へのリンクを誰かが持っていますか? 私は仕様のコピーを持っていますが、それは簡潔ではないので、仕様をリンクすることは有用な答えではありません. ウェブを1時間検索しましたが、明確なものは何も見つかりませんでした(仕様は別として、もちろん以前の仕様も読む必要があり、「必要な」から「新機能」を除外します)コンプライアンス"。

特に、web.xml の必要性についてかなりの混乱があることがわかりました。これは、Liferay を使用していて、Liferay が web.xml をドロップしていることに気付いていない人々から来ているようです。

JSR-286 ポートレットでは、WAR ファイルに web.xml ファイルが必要ですか?

私が本当に欲しいのは、次のリストの 1 つ以上を含むものです。

  • JSR-168 を JSR-286 に準拠させるために必要なこと
  • JSR-286 準拠のポートレットが JSR-168 のみと見なされる原因となる、してはいけないこと。

「portlet-app_2_0.xsd を使用する」をリストから外してもかまいません。その部分は明らかだと思います。

portlet.xml の DTD/xsd を除いて、両方のリストが空であるという答えにはオープンです。違いはポータルがサポートするものだけですが、その主張をリンクまたは他の参照でバックアップしてください。

私が気にかけている理由は、JSR-168 ポートレットでは一部の機能が利用できないことを示唆する Liferay の Vaadin ポートレットに関する投稿を目にするからです...また、Liferay の一部のロジックは、表示される portlet.xml のバージョンに基づいて切り替わる可能性があります。それも確認していないので、それも興味深い情報ですが、私の質問に対する答えではありません。

4

2 に答える 2

3

this docによると、それはjsr286でも言及されています:

JSR 286 仕様 (ポートレット 2.0) は、JSR168 (ポートレット 1.0) とのバイナリ互換性を壊しません。これは、Portlet 1.0 仕様に基づいて作成されたすべてのポートレットが変更されずに実行できることを意味します。この規則の唯一の例外は次のとおりです。

renderResponse.setContentTypegetWriter または getOutputstream を呼び出す前に不要になりました。JSR168 では、事前にコンテンツ タイプを設定せずに getWriter または getOutputstream を呼び出すと、IllegalStateException が発生していました。

getProtocol含まれているサーブレット/JSP の場合、「HTTP/1.1」が返されます。JSR168 では、null が返されました。

したがって、jsr168 ポートレットが返される値に依存しない限り、getProtocol()安全です (つまり、すべての jsr168 ポートレットは jsr286 ポートレットです)。

jsr286 はより新しい仕様であり、jsr268 ポートレットを jsr168 ポートレットではなくするいくつかの機能があるため、表示される投稿は論理的であるように見えます。

于 2012-01-27T16:49:27.277 に答える
1

わかりました。2.0 ポートレットと 1.0 ポートレットを区別する新しいものは何も見つからないので (追加のサービスと を使用することを除けば)、ここで回答のリストを開始します。

しなければならない:

  1. portlet.xml の 2.0 XSD に準拠 (xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd")

してはいけないこと:

  1. renderResponse.setContentType がまだ呼び出されていない場合は、例外をスローする getWriter に依存します。(どう見ても無理っぽい)
  2. null を返す getProtocol() に依存する

つまり、portlet.xml を単純に変換すると、プログラム フローで 2 番目のリストの 2 つの項目に依存しない限り、"286 準拠" になります。他に何も見つかりませんが、誰かがこれらのリストの別のアイテムを見つけた場合は、編集してください.

于 2012-01-30T15:54:15.367 に答える