2012-03-21 86 views
4

我有使用服務構建器構建的Liferay Custom服務。我有WebArticleLocalHelperServiceImpl這是我的服務的實施。如何從liferay中的其他插件調用定製服務?

如何從其他插件項目調用我的服務。

我能夠使用調用從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()) 

我能夠從Velocity模板調用服務,但我不能夠調用其他插件工程服務(Portlet的)

當我打電話ServiceLocatorMVCPortlet,它說ClassNotFound

什麼是從MVCPortlet打電話給*serviceImpl的正確方法?

我也在這裏搜索了liferay論壇,但沒有任何解決方案爲我工作。

非常感謝。

回答

7

運行servicebuilder時,會得到一個* -service.jar(其中*是項目/服務的名稱)。你需要使這個jar可用於你想要調用它的插件。你可以通過聲明一個依賴項(liferay-plugin-package.properties),手動將其複製到該插件或將其放在全局類路徑上來做到這一點

+0

我也從liferay論壇讀了同樣的東西,但有一個問題我的錯誤是,如果其他開發人員更改了my-services-portlet,並且由於* -services.jar包含大量即時生成的代碼,那麼我將如何在其他插件項目中提供此jar?他們將如何進入生產部署? liferay論壇中的某些人建議停止tomcat服務器並將jar放在tomcat/lib/ext中,但這在生產服務器中是不可能的。有沒有解決方法? – 2012-03-22 06:25:53

+0

我建議你在調用「deploy」任務時修改插件SDK主構建文件以將服務JAR複製到tomcat/webapps/ROOT/WEB-INF/lib之類的某個位置。然後,如果開發人員更改服務,他們將重新創建JAR,並在部署時複製它。 – Jonny 2012-03-22 06:54:43

+0

「官方」方式(或者至少是Brians在liferay論壇上推薦的方式)是將jar放入tomcat/lib/ext中。您可能會遇到類加載器問題,將其放入ROOT/WEB-INF/lib中,並使用liferay-plugin-package.properties從其他插件引用它(實際上,我經歷過問題,我自己這樣做) – Mat 2014-05-09 10:26:08

相關問題