Java 在Spring中注入EJB
我使用Java EE API 7定义了EJB,如下所示:Java 在Spring中注入EJB,java,spring,jakarta-ee,ejb-3.0,Java,Spring,Jakarta Ee,Ejb 3.0,我使用Java EE API 7定义了EJB,如下所示: @Stateless @LocalBean public class Foo { @Inject private Boo boo; public void doFoo(Collection<Object> c) { boo.doSomething(c); } } 以及: 是否可以在Spring中将Foo类的实例作为EJB注入?如果是,怎么做?我理解您的问题是:使用spri
@Stateless
@LocalBean
public class Foo {
@Inject
private Boo boo;
public void doFoo(Collection<Object> c) {
boo.doSomething(c);
}
}
以及:
是否可以在Spring中将Foo类的实例作为EJB注入?如果是,怎么做?我理解您的问题是:使用spring将请求范围的bean注入到另一个bean中有问题。 所以试试这个:
<bean id="boo" class="Boo" scope="request">
<aop:scoped-proxy/>
</bean>
<bean id="foo" class="Foo">
<property name="boo" ref="Boo" />
</bean>
我将您的问题理解为:您在使用spring将请求范围的bean注入另一个bean时遇到了问题。 所以试试这个:
<bean id="boo" class="Boo" scope="request">
<aop:scoped-proxy/>
</bean>
<bean id="foo" class="Foo">
<property name="boo" ref="Boo" />
</bean>
您可以使用注入拦截器 对于EJB3会话bean和消息驱动bean,Spring提供了 方便的拦截器,解决Spring 2.5的@Autowired EJB组件类中的注释: org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor。 此拦截器可以通过@Interceptors应用 EJB组件类中的注释,或通过 EJB部署描述符中的侦听器绑定XML元素 代码示例:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class Foo {
@Autowired
private Boo boo;
}
有关更多信息,请参阅
如果需要从spring访问EJB,可以在spring-context.xml配置中定义bean,如下面的示例所示
<jee:local-slsb id="myComponent" jndi-name="ejb/fooBean"
business-interface="com.Foo"/>
您可以在第18.2.2节中了解更多信息。访问上面引用的本地SLSB。您可以使用注入拦截器 对于EJB3会话bean和消息驱动bean,Spring提供了 方便的拦截器,解决Spring 2.5的@Autowired EJB组件类中的注释: org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor。 此拦截器可以通过@Interceptors应用 EJB组件类中的注释,或通过 EJB部署描述符中的侦听器绑定XML元素 代码示例:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class Foo {
@Autowired
private Boo boo;
}
有关更多信息,请参阅
如果需要从spring访问EJB,可以在spring-context.xml配置中定义bean,如下面的示例所示
<jee:local-slsb id="myComponent" jndi-name="ejb/fooBean"
business-interface="com.Foo"/>
您可以在第18.2.2节中了解更多信息。访问上面引用的本地SLSB。因此,我无法完全分离注入纯EJB的两个框架;它被部署为jar。出于某些原因,我想将此EJB连接到一个Spring应用程序中。刚刚更新了我关于如何从springMmm访问EJB的答案,很抱歉打扰您,但是jndi名称定义是什么?它是您的EJB的名称,当您使用注释时,它可能是完整的包名+类:com.package.Foo。。。你也可以在启动应用程序时检查ejb的名称,它在控制台中列出了名称。我不能完全分离注入纯ejb的两个框架;它被部署为jar。出于某些原因,我想将此EJB连接到一个Spring应用程序中。刚刚更新了我关于如何从springMmm访问EJB的答案,很抱歉打扰您,但是jndi名称定义是什么?它是您的EJB的名称,当您使用注释时,它可能是完整的包名+类:com.package.Foo。。。您还可以在启动应用程序时检查ejb的名称,它会在控制台中列出该名称