2013-02-11 4 views
0

Я хотел попробовать Groovy, и я решил использовать его только для слоя вида сейчас в новом проекте javaee (без grails или подобного). Также было много разговоров о groovy + javaee, но я не могу найти рабочий случай, который бы соответствовал моему.JavaEE EJB и Groovy

Так что у меня есть проект уха maven, модуль модуля/контроллера ejb останется на java на данный момент (я включил groovy зависимостей, но, похоже, вам нужно использовать java для этого), в то время как модуль просмотра имеет полную поддержку groovy. Я использую Eclipse + m2e, и все до сих пор интегрируется и компилируется. В модуле просмотра я могу даже сделать отличную фасоль, и, похоже, она работает нормально. Проблема в том, что я не могу найти способ вставки компонента EJB в groovy bean-компонент через аннотацию @EJB. Поскольку я не могу найти пример подобной настройки, возможно, это даже невозможно.

Итак, просто для того, чтобы успокоить мое любопытство, если кто-нибудь знает, как я могу получить свой богатый боб, чтобы читать данные из EJB? Это может быть не обязательно через указанную аннотацию, любой способ сделать это в порядке. Я мог бы сделать веб-сервис для одного, но это немного слишком сложно и избыточно.

ответ

0

Я знаю, что это Немного Старый поток, но для тех, кто ищет, мне удалось успешно использовать Groovy в проекте Java EE 6. Оба контроллера и EJB впрыскиваются в контроллеры с использованием @EJB.

Вот мои настройки:

  • Затмение Juno 4.2.2
  • Ubuntu 12,04
  • Groovy 2.1.3
  • JSF 2.1
  • Glassfish 3.1.2

Самая сложная часть состоит в том, что Groovy lib необходимо скопировать в glassfish/lib, также с моим драйвером jdbc postgres.

Я создал новый проект корпоративного приложения в Eclipse, и создан: модуль

  • коннекторов: интерфейсы и модели, все Java, но я думаю, что заводной выполнимо
  • веб-модуль: заводной контроллеры
  • модуль
  • EJB: заводной EJBs

контроллер:

@ManagedBean 
@ViewScoped 
class Controller { 
    @EJB ServiceLocal service 

    List list() { 
     service.list() 
    } 
} 

EJB-:

@Stateless 
class Service implements ServiceLocal { 

    @Override 
    public List<Model> list() { 
     [ 
      [name: "A"], 
      [name: "B"], 
      [name: "C"] 
     ] 
    } 

И вид:

<h:dataTable value="#{controller.list()}" var="e"> 
    <h:column> 
     <f:facet name="header">Name</f:facet> 
     #{e.name} 
    </h:column> 
</h:dataTable> 

И это прекрасно работает.