現在、Liferay とそのポートレット機能、特に WSRP 経由のリモート ポートレットを調べています。
同じネットワーク内の異なるマシンで 2 つの liferay インスタンスを実行しています。ここで、liferay インスタンスの 1 つから別のインスタンスにポートレットを共有したいので、両方のインストールに WSRP アプリをインストールし、ノードの 1 つを WSRP プロデューサーとして、もう 1 つを WSRP コンシューマーとして構成しました。私の WSRP Producer は、Liferay に含まれている通貨計算用のポートレット (ドイツ語で Währungsrechner) を発行します。一見すると、この WSRP ポートレットは WSRP コンシューマ側で動作しているように見えます。WSRP コンシューマのページに追加すると、そのコンテンツ (いくつかの入力ボックス) が正しく表示されます。
しかし、1 つの問題があります。
ポートレットによって表示される HTML フォームは、予想どおり WSRP コンシューマのドメインではなく、常に WSRP プロデューサのドメインに送信されます。タグのアクション属性に間違ったドメイン名が含まれています。
また、JSP-Tag の出力を単純に出力し、WSRP プロデューサーにインストールして、WSRP コンシューマーのページに埋め込む Liferay UI を使用して、デバッグ用の小さなポートレットを作成しました。この単純なデバッグ ポートレットによって出力される URL は常に絶対 URL であり、ポートレットが WSRP コンシューマに表示される場合でも、WSRP プロデューサを指します。URL は相対的なものであるか、正しいドメイン (たとえば、ポートレットが WSRP コンシューマ liferay インスタンスのページを介して表示される場合の WSRP コンシューマ ドメイン) を指していることが予想されます。
私が Liferay を評価した理由は、ポートレットを開発し、これらのポートレットを WSRP 経由でリモートで使用するために提供するのに適したソリューションであるかどうかを確認したいからです。この問題をさらに調査するために、Liferay SDK と Eclipe プラグインを使用して小さなデバッグ ポートレットを作成しました。ポートレットは主に、次の結果を出力する単純な JSP ページで構成されます。
<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %> <span class="important"%>portlet:actionURL: </span><portlet:actionURL/%>
このポートレットを lifery.mycompany.net にインストールし、WSRP プロデューサーを介して liferay-2.mycompany.net に公開すると、出力 URL は次のようになります。
http://liferay.mycompany.net:8080/de_DE/widget/web/wsrp-achimstestproducer/portlets?p_auth=0iLgJP7e&p_p_id=sbdebug_WAR_sbliferaydemopluginportlet_INSTANCE_qs2S&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view
ドメインは、予想される liferay-2.mycompany.net ではなく、liferay.mycompany.net であることに注意してください。
どうすればこれを修正できますか? WSRP コンシューマが WSRP ポートレットからの URL を独自の URL に置き換えるように、Liferay の設定を調整する必要がありますか? WSRP ポートレットと actionURL に影響を与える他の要因はありますか? この問題に関するヘルプは大歓迎です!
私のセットアップは次のとおりです。 -Tomcat 7を搭載したLiferay 6.2 CE -データベースはMySQL 5.5 -Oracle Java 7 -Liferayは組み込みのインストールウィザードで構成されました
前もって感謝します!
2014-05-23: ここにいくつかの詳細情報があります
また、 liferay のフォーラムにいくつかの追加情報とともにこの質問を投稿しました。
--> liferay-portlet.xml で requires-namespaced-parameters を false に設定すると、ドメインの問題が解決するように見えますが、ポートレットが WSRP 経由で使用されている場合、ポートレットの processAction メソッドは実行されません:(
ここで何か間違ったことをしていますか?どんなアイデアやヒントも大歓迎です!