Я создаю новое веб-приложение на Java с Spring 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 и бинах Spring, и единственное отличие состоит в том, какая среда создает объект и выполняет инъекцию.