0

私はliferay1.8.2とliferay5.2を使用しています。私はさまざまな戦争ファイルに多くのポートレットを持っており、複数の戦争にわたって異なるポートレット間でデータを共有する方法について、liferayドキュメントの例を試しましたが成功しませんでした。

  1. セッション共有では、データがportletsessionアプリケーションスコープにあったとしても、最初のポートレットから2番目のポートレットにデータを取得できませんでした。
  2. 偶数ベースのメカニズムを使用すると、 <portlet:defineObjects /> and <portlet:actionURL />タグを使用するとエラーが発生します

原因:javax.faces.FacesException:JSPライフサイクルの実行に失敗しました。
at com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:181)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:439)
... 189 more原因:javax。 servlet.jsp.JspException:
com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java)
のcom.liferay.taglib.portlet.ActionURLTag.doEndTag (ActionURLTag.java:212)のjava.lang.reflect.InvocationTargetException :246)
com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp .parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser.java:229)
at com.icesoft.faces.webapp.parser.Parser.executeJspLifecycle(Parser .java:229)
at com.icesoft.faces.webapp.parser.Parser.parse(Parser.java:162)
... 190 more
原因:java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
(sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39))
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java :180)
com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:49)
at com.liferay.taglib.portlet.ActionURLTag.doTag(ActionURLTag.java:179)
atcom.liferay.taglib。 portlet.ActionURLTag.doEndTag(ActionURLTag.java:200)... 199 more
原因:javax.servlet.jsp.JspException:java.lang.UnsupportedOperationException
at com.liferay.portal.servlet.taglib.portlet.ActionURLTagUtil.doEndTag( ActionURLTagUtil.java:174)...207
詳細
原因: com.liferay.portal.servlet.taglib.portlet.TagUtil.getPortletName( TagUtil.java
:)のcom.icesoft.faces.webapp.parser.StubHttpServletRequest.getAttribute(StubHttpServletRequest.java:116)のjava.lang.UnsupportedOperationException
100)
com.liferay.portal.servlet.taglib.portlet.ActionURLTagUtil.doEndTag(ActionURLTagUtil.java:68)で

誰かが詳細な説明とサンプルコードで、異なるWARに存在するポートレット間でIPCを実現する方法を提案できますか?

4

1 に答える 1

1

IceFaces 1.8.x を使用して、異なる WAR 間でポートレット間通信 (IPC) を実行することはできません。

これは、IceFaces 2.0 がリリースされたときに可能になります。アルファ版は既に利用可能です。

ただし、IceFaces 1.8.x を使用してある種の IPC を実行することは可能です。Icefaces 開発者ガイドの「高度なトピック」の章では、このトピックについて説明しています。

Ajax プッシュを使用すると、現在のビューの状態を変更するサーバー側のイベントに基づいてポートレットを更新できます。これは、特定の構成でポートレット間通信 (IPC) の形式を実行するためにも活用できる強力な機能です。

IPC はポートレット 1.0 仕様 (JSR 168) でのみ言及されていますが、ポートレット 2.0 仕様 (JSR 286) で正式に定義されています。

イベント/リスナー モデルとして設計されています。ただし、ICEfaces Ajax Push メカニズムを使用して、基礎となるモデルへの変更に基づいてポートレットを更新することは可能です。現在ICEfacesでこれを行う方法は次のとおりです。

  • 同じアーカイブ (.war ファイル) で通信する必要があるポートレットをデプロイします。
  • アプリケーション スコープの Bean を使用して、
    ポートレット間の共有状態を管理します。
  • ICEfaces Ajax Push 機能を使用して
    、共有状態が変化したときにクライアントの更新をトリガーします。
  • これを行う方法の例については、サンプルの ICEfaces Chat ポートレットを確認してください。
于 2010-01-11T15:46:34.213 に答える