Использование Spring MVC 3.0 и аннотации @EJB без mappedName?

Я делаю новое веб-приложение на Java с Спринт g MVC 3.0 и хочу использовать как можно больше стандартных вещей Java EE 6. (Я использую Glassfish 3.1.1.) Настоящий драйвер хочет использовать веб-фреймворк MVC, а не JSF.

Итак, я ищу лучший способ внедрить EJB в мои контроллеры Spring. У меня был некоторый успех, но я не доволен тем, как он выглядит, и я надеялся найти лучший способ.

Это сработало, обнаружив EJB через JNDI:

// EJB 
@Stateless
public class Service {
  @PersistenceContext(name="MAIN")
  private EntityManager em;

  public void doSomething() { .... } 

}

// Spring 
@Controller
public class HomeController {
   @EJB(mappedName="java:global/springtest/Service") 
   private Service service;

   // controller methods use service 
}

Но я недоволен тем, что мне нужно «mappedName» в аннотации @EJB в контроллере.

Есть ли лучший способ сделать это?

Хорошая новость заключается в том, что я могу использовать одну и ту же аннотацию @Inject в EJB-компонентах и ​​bean-компонентах Spring, и единственная разница заключается в том, какой фреймворк создает объект и выполняет инъекцию.

12
задан Arjan Tijms 23 June 2013 в 14:17
поделиться