У меня есть несколько фазовых сессий EJB 3.x, которые не имеют определенных интерфейсов. Мне нужно вставить эти бобы в весенний боб, но я не могу этого сделать.Как я могу ввести EJB без интерфейса в компонент Spring?
Нет интерфейса EJB:
@Singleton
public class MyNoInterfaceEJB {
public String sayHello() { return "hi"; }
}
Мой боб:
@Named
public class MyEJBClientBean {
@EJB
private MyNoInterfaceEJB testejb;
// ...
}
И мой bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">
<jee:local-slsb id="testejb" jndi-name="java:global/MyEAR/MyModule/MyProject!com.test.MyNoInterfaceEJB"
business-interface="com.test.MyNoInterfaceEJB"/>
<context:annotation-config />
<context:component-scan base-package="com.test" />
</beans>
На инициализации весеннего контейнера, я получаю следующее сообщение об ошибке:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'testejb':
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: [com.test.MyNoInterfaceEJB] is not an interface
Исключение само по себе очень ясно - весенний контейнер ожидает, что мой bean-компонент имеет локальный интерфейс, поскольку это бизнес-интерфейс; однако у меня его нет (и его не может ввести).
Любая помощь очень ценится!
Это ближайший связанный вопрос, который я мог найти: http://stackoverflow.com/questions/23008810/ejb-3-injection-into-spring-beans - но для этого требуется использование видов удаленного и локального интерфейса, которые для меня это не вариант. –
EJB, CDI (как подразумевается под именем '@ Named'. Таким образом, то, что вы говорите,« Контроллеры »теперь управляются CDI, а не Spring), JPA и т. Д., Которые вы должны использовать, являются частью Java EE. Что заставляет вас по-прежнему придерживаться Spring, то есть какие функции вы используете Spring, которые недоступны в Java EE? (Это не спорный, а общий прецедент). – Tiny