サービスビルダーを使用して構築された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())
を)
ServiceLocator
をMVCPortlet
から呼び出すと、ClassNotFound
と表示されます。
*serviceImpl
をMVCPortlet
に電話する適切な方法は何ですか?
私はこれに関する生涯フォーラムを検索しましたが、解決策のどれも私のために働いていませんでした。
ありがとうございます。
私はライフラーニングフォーラムからも同じことを読んでいますが、他の開発者がmy-services-portletを変更し、* -services.jarに大量のコードが生成されているので、他のプラグインプロジェクトでこのjarファイルを使用できるようにする方法はありますか?実稼働環境への展開はどのようになりますか? liferay forumsの誰かがtomcatサーバーを停止し、tomcat/lib/extにjarファイルを置くことを提案しましたが、これは運用サーバーでは不可能です。回避策はありますか? –
"deploy"タスクが呼び出されたときに、プラグインSDKのメインビルドファイルを変更して、サービスJARをtomcat/webapps/ROOT/WEB-INF/libのような場所にコピーすることをお勧めします。その後、開発者がサービスを変更すると、JARが再作成され、展開時にコピーされます。 – Jonny
「正式な」方法(または少なくともライオライーフォーラムのBriansが推奨する方法)は、jarファイルをtomcat/lib/extに置くことです。あなたはROOT/WEB-INF/libに入れ、liferay-plugin-package.properties(...実際に私はこのように自分自身で問題を経験しました)を使って他のプラグインから参照することで、クラスローダーの問題を経験するかもしれません。 – Mat