4

サービス ビルダーを使用して構築された Liferay ポータル プロジェクトがあります。ポートレットを生成する際に jar も作成され、その jar を他のポートレットで使用したいと考えています。ここや他の場所の投稿から、myPortletName-portlet-services.jar を他のポートレットの WEB-INF/lib フォルダーに配置することをお勧めします。*-portlet-services.jar が Tomcat の /lib/ext フォルダーに配置されている場所も確認しました。また、依存関係で liferay-plugin-package.properties を更新する必要がある場所も読みました。

私はそれぞれのアプローチを試してみましたが、それぞれが興味をそそるほど効果的な結果を生み出しています. サービス ビルダーで構築された jar は、LR データベースとは異なる jndi/jdbc グローバル リソースを参照し、メソッドがその jar から呼び出されると、「ユーザーに権限がないか、オブジェクトが見つかりません:」というエラーが表示されます (これについては他の場所で投稿しました)。 )。

私の推測では、jar には満たされていない Spring/Hibernate への依存関係がいくつかあります。または、jar がサービス ビルダーのデプロイされたポータルの外部に配置されている場合、jndi/jdbc リソースは「表示」されません。いずれにせよ、jar のメソッドが見つかっていることは明らかなので (それ以外の場合は恐ろしい beanLocator エラー)、これは単に DB 接続の問題です。

問題は、サービス ビルダーによって生成された jar が元のポータルの外部の他のポータルに配置された場合に満たされない構造上の依存関係があるかどうかです。

4

1 に答える 1

0

他のポートレットで Liferay Service Builder jar を使用するには、次を試してください。

  1. Tomcat (または他のアプリケーション サーバー) の lib 内の jar に配置されたServiceLocatorを作成します。
  2. Springコンテキストの静的フィールドとしてセッターによってサービスビルダーからサービスロケーターにBeanを設定します(セッターは静的フィールドを設定する必要があります)
  3. 次に、サービス ロケーターの Bean を使用し、呼び出しを委譲する Bean を実装します。

    • tomcat libに配置されたクラス静的フィールドを介してサービスビルダーからBeanを渡すだけです(どこでも表示されます)
    • libのjarにも必要なインターフェースを配置します
于 2014-08-12T07:00:02.697 に答える