当前位置: 首页 > 面试题库 >

将EJB 3注入Spring Bean

谈萧迟
2023-03-14
问题内容

我试图将EJB注入到Spring(3.1.2)服务中(都在不同的 WAR中)两者都非常简单(删除了方法以简化示例):

EJB:

@Remote
public interface MyBean {
}

@Singleton
public class MyBeanImpl implements MyBean{
}

Service:

@Service
public class MyServiceImpl implements MyService{
}

事情很简单,但我尝试过:

@EJB(lookup = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

它没有用。然后我还尝试了:

@EJB(mappedName = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

and

@Resource(mappedName = "java:global/ejbApp/MyBeanImpl!com.my.MyBean")
private MyBean myBean;

但都没有奏效。

我设法使用以下方法注入了EJB:

<jee:jndi-lookup id="myBean" jndi-name="java:global/ejbApp/MyBeanImpl!com.my.MyBean" />

在我的spring配置和服务中:

@Autowired
private MyBean myBean;

但我真的不喜欢这种解决方案。我希望在某些注释中包含我的JNDI路径,例如:

@EJB(lookup = MyBean.JNDI_NAME)
private MyBean myBean;

问题答案:

我们找到了非常好的简单解决方案。放入spring配置文件中必须放入:

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor">
    <property name="alwaysUseJndiLookup" value="true" />
</bean>

这样一来,spring就能在JNDI中搜索以@Resource注释的bean。因此,现在可以做到:

@Resource(mappedName = MyBean.JNDI_NAME)
private MyBean myBean;


 类似资料:
  • 我做了一个简单的项目来测试 EJB3 实现。 使用maven我在项目中创建了3个模块,分别是“MyEjb”EJB,“MyWeb”这场战争,“MyWeb2”另一场战争。战争模块是EJB的客户端。 问题是,当我部署EAR时,控制台显示有3个EJB上下文,每个模块创建一个。模块MyEjb的EJB上下文不在wars模块之间共享,每个模块都从自己的MyEjb依赖项中获取数据。 我必须在一个单独的JAR中创建

  • Enterprise Java Beans (EJB) 3.0 对 EJB 规范进行了深入改革和简化。EJB 3.0 的目标是简化开发,促进测试驱动开发,更专注于编写纯 Java 对象(POJOs) 而不是复杂的 EJB APIs。EJB 3.0 完全认同 JDK 5.0 引入的 Java Annotations,使用 Hibernate 作为 EJB 3.0 Java Persistence 引

  • 我遇到此错误,不知道如何修复: 这是: @无状态的公共类AlertFacade扩展了AbstractFacade{@PeristextContext(unitName="flams_pu")私有EntityManager em; 我在JSF托管bean中使用。 EJB应该是可序列化的吗?我不明白。请帮帮忙

  • JBoss EJB3 Plugin 是可执行的 JAR,是最新 EJB3 二进制包(依赖项目)现有 JBoss AS 安装补丁。此版本只支持最新的 JBoss AS 5.x。 要求: Ant (1.6.5) Java - JDK 1.5 及其以上版本 JBoss AS-5.x

  • 该plugin提供struts的Action及Interceptor对EJB组件及Resource的无侵入式依赖注入(DI)。 安 装方法: 将 struts-ejb3-plugin.jar 考入 /WEB-INF/lib 目录中。这时使用的为plugin的默认配置,该配置为 cn/agrael/struts/plugin/ejb3/default-struts-ejb3-plugin.prope

  • 问题内容: 是否可以将Spring bean注入RestEasy @Path类中?我设法通过Jersey并使用@InjectParam注释完成了此操作,但是由于某些其他原因,我需要切换到RestEasy,而且我似乎找不到解决方法(尝试了javax.inject.Inject,但没有)。 编辑 此解决方案有效:http : //www.mkyong.com/webservices/jax-rs/re

  • 情况:多个相同的Kafka数据源被平面映射到元组中,以便以后进行联合、缩减、保存等等。 我需要知道每个平面映射数据包来自哪个原始数据源,以标记元组中的标签。我不希望每个数据源都有单独的FlatMapFunction,因为可能有数百个。 理想情况下,我能够将一些值传递到flatmap函数中,以添加到结果元组中。 可能的还有其他的方法来实现这一点吗?

  • 我一直在思考编译时评估注释值的Java特性,它似乎真的很难外部化注释值。 但是,我不确定这是否真的是不可能的,所以我非常感谢对此的任何建议或明确的答案。 更重要的是,我试图将控制Spring中预定方法调用之间延迟的注释值外部化,例如: 假设位于类路径上,并且包含属性键及其相应的长整型值。 现在,这段代码有明显的编译错误,因为我们试图将值赋给变量,但这是强制性的,因为我们不能将变量赋给注释值,除非它