1

JSR 286 仕様では、web.xmlポートレットを含む WAR にファイルが存在する必要がありますか? 最初はそう思っていたのですが、 なしでポートレットを作成し、web.xmlそれを Liferay にデプロイしたところ、問題なく動作しました。それは Liferay の拡張 (またはバグ) ですか、それともそのようなファイルを持つ必要はありませんか?

4

2 に答える 2

1

仕様を掘り下げる必要がありますが、この点に関しては、サーブレットの仕様に従っていると思います。ポートレット アプリケーションは、何よりもまずアプリケーション サーバーにデプロイされます。サーブレット仕様で web.xml が必要な場合、この要件を満たす必要があります。そうしないと、Appserver は WAR を展開しません (WAR ファイル形式がweb.xmlを必要とするか、または推奨するかどうかは多かれ少なかれ問題です)

Liferay は、Apperver が Web アプリケーションをデプロイした後にのみ起動します。Liferay 自体は web.xml を気にしません。

この議論に基づいて (そして仕様を見ずに - だから私はここで知識に基づいた推測をしています)、私は JSR 286が web.xml について声明を出さないことを期待しています。ただし、おそらくサーブレット仕様を参照しており、これにより web.xml が必要/推奨/言及される場合があります。

また、Appserver がそれを必要とするかどうか、またはそれがない場合にどのように動作するかは、また別の話です。

于 2012-01-05T22:56:58.013 に答える
1

オラフが正しく言ったように、ポートレットは Web アプリケーションにすぎません。Liferay には、ポートレットの自動デプロイ時にトリガーされるリスナーがあります。戦争を爆発させ、必要な web.xml とコンテンツを追加します。ソースがあればロジックを確認できます。クラス名は PortletDeployer で、メソッドは getServletContent です。web.xml を追加して詰め込んだ後、FileUtil.touch を使用してタッチするだけです。

于 2012-01-09T13:42:31.317 に答える