2016-11-25 11 views
2

Принимая во внимание, что у меня не было проблем с Service Builder в Liferay 6.2, я встречаю проблему блокировки в Liferay 7, когда я строю службу для создания своего первого класса Finder Util. Когда я это обнаружил, я даже решил начать с нуля проект, проблема все еще здесь. Даже с официальным документом ничего не работает.Finder Класс Util, не сгенерированный с помощью Liferay 7 Service Builder

Есть ли у кого-нибудь идеи, чтобы помочь мне?

Вот полное описание моего последнего теста в Eclipse, Марс:

  1. Создать новую рабочую область Liferay
  2. Создать новый модуль Liferay Project Service Builder
  3. Создать объект Foo в service.xml
  4. Строительные услуги (класс хорошо генерироваться)
  5. вручную создать класс FooFinderImpl в пакете persistence.impl
  6. Строительные услуги
    Интерфейс FooFinder хорошо сгенерирован , но класс FooFinderUtil не сгенерирован.
  7. Добавьте некоторые методы в классе FooFinderImpl
  8. Строительные услуги
  9. ничего нового

Спасибо вам помочь.

Винсент

ответ

2

При создании службы есть некоторые свойства в build.gradle, так что если вы хотите создать класс Util должен установить osgiModule ложь.

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-документы https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/finding-and-invoking-liferay-services

Пример на github http://github.com/bruinen/liferay-services-example

+0

Большое спасибо за ваш ответ! Ваше первое предложение решило проблему, но я бы сохранил OSGI. Итак, я только что попробовал второй, но мой искатель null, мне нужно объявить его где-нибудь еще? – Vincent

+0

вы можете попробовать другой код, который я добавляю в редактировании. Ссылочное взятие принимает сервисную реализацию интерфейса, поэтому вам просто нужно развернуть foo-service osgi и foo-api. попробуйте импортировать пакет в пакет, который вы используете finder 'Import-Package: com.liferay.foo.service'. –

+0

Хорошо, мой искатель по-прежнему имеет нулевое значение с третьим решением, но я собираюсь прочитать документацию Liferay, о которой вы указали. Я даю вам новости. – Vincent