2016-11-25 78 views
2

儘管Liferay 6.2中的服務生成器沒有問題,但當我構建服務以生成我的第一個Finder Util類時,遇到了Liferay 7中的阻塞問題。 當我發現時,我甚至決定從頭開始一個項目,問題依然存在。 即使有官方文檔,也沒有任何作用。未使用Liferay 7服務生成器生成的Finder Util類

有人有任何想法來幫助我嗎?

下面是我在Eclipse火星上次測試的完整描述:

  1. 創建一個新的Liferay工作區
  2. 創建一個新的Liferay工程模塊服務構建
  3. 創建service.xml的Foo對象
  4. 生成服務 (類是公生成)
  5. 手動創建在persistence.impl包FooFinderImpl類
  6. 構建服務
    FooFinder界面生成良好但未生成FooFinderUtil類。
  7. 添加一些方法在FooFinderImpl類
  8. 構建服務
  9. 沒有新

謝謝你的幫助。

文森特

回答

2

當你建立有在的build.gradle一些屬性,所以如果你想生成的Util類具有osgiModule設置爲false的服務。

buildService { 
    apiDir = "../foo-api/src/main/java" 
    osgiModule = false 
    propsUtil = "com.liferay.docs.foo.service.util.PropsUtil" 
} 

否則,如果你想使用的OSGi你可以retrive取景器這樣

@Reference 
private volatile FooFinder fooFinder; 

@Reference(unbind = "-") 
protected void setFooFinder(
     FooFinder fooFinder) { 

    _fooFinder = fooFinder; 
} 

private FooFinder _fooFinder; 

更多信息請參閱Liferay的-docs的https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/finding-and-invoking-liferay-services

exampel github http://github.com/bruinen/liferay-services-example

+0

非常感謝您的回答! 你的第一個主張解決了這個問題,但我會保持OSGI。 所以,我剛剛嘗試第二個,但我的發現者爲空,我必須在其他地方聲明它嗎? – Vincent

+0

你可以嘗試我在編輯中添加的其他代碼嗎?引用需要接口的服務實現,所以你只需要部署osgi bundle foo-service和foo-api。嘗試在使用查找程序'Import-Package:com.liferay.foo.service'的包中導入包。 –

+0

好的,我的發現者在第三種解決方案中仍然是空的,但我將閱讀你已經提到的Liferay文檔。我給你消息。 – Vincent