2012-03-21 16 views
4

サービスビルダーを使用して構築されたLiferayカスタムサービスがあります。私は私のサービスの実装であるWebArticleLocalHelperServiceImplを持っています。ライフラインの他のプラグインからカスタムサービスを呼び出すにはどうすればいいですか?

他のプラグインプロジェクトから私のサービスを呼び出す方法を教えてください。

私が使用してVelocityテンプレート・プロジェクトからサービスを呼び出すことができる午前:私はVelocityテンプレートからサービスを呼び出すことができるが、私は、ポートレット(他のプラグイン・プロジェクトからサービスを呼び出すことができないのです

// get the service using servicelocator. 
#set ($myService = $serviceLocator.findService('my-services-portlet', 'com.mycompany.service.MyService')) 

// then call the service method  
#set ($result = $myService.mymethod()) 

を)

ServiceLocatorMVCPortletから呼び出すと、ClassNotFoundと表示されます。

*serviceImplMVCPortletに電話する適切な方法は何ですか?

私はこれに関する生涯フォーラムを検索しましたが、解決策のどれも私のために働いていませんでした。

ありがとうございます。

答えて

7

servicebuilderを実行すると、* -service.jar(*はプロジェクト/サービスの名前)が表示されます。このjarファイルを呼び出したいプラグインで利用できるようにする必要があります。依存関係(liferay-plugin-package.properties)を宣言するか、手動でそのプラグインにコピーするか、グローバルクラスパスに配置してください。

+0

私はライフラーニングフォーラムからも同じことを読んでいますが、他の開発者がmy-services-portletを変更し、* -services.jarに大量のコードが生成されているので、他のプラグインプロジェクトでこのjarファイルを使用できるようにする方法はありますか?実稼働環境への展開はどのようになりますか? liferay forumsの誰かがtomcatサーバーを停止し、tomcat/lib/extにjarファイルを置くことを提案しましたが、これは運用サーバーでは不可能です。回避策はありますか? –

+0

"deploy"タスクが呼び出されたときに、プラグインSDKのメインビルドファイルを変更して、サービスJARをtomcat/webapps/ROOT/WEB-INF/libのような場所にコピーすることをお勧めします。その後、開発者がサービスを変更すると、JARが再作成され、展開時にコピーされます。 – Jonny

+0

「正式な」方法(または少なくともライオライーフォーラムのBriansが推奨する方法)は、jarファイルをtomcat/lib/extに置くことです。あなたはROOT/WEB-INF/libに入れ、li​​feray-plugin-package.properties(...実際に私はこのように自分自身で問題を経験しました)を使って他のプラグインから参照することで、クラスローダーの問題を経験するかもしれません。 – Mat

関連する問題