jakarta-ee - 通过名称访问 session bean,无需 JNDI 查找

标签 jakarta-ee glassfish ejb spring-el

我想写一个自定义BeanResolver用于 Spring 表达式语言解析表达式中的 EJB(例如 "@MyBean.property=='example-value'")。如何在不执行 JNDI 查找的情况下通过名称检索 Bean?我是否必须为我选择的应用程序服务器(即 glassfish)编写一个插件?

最佳答案

EE注入(inject)和JNDI查找是所有EJB的入口点;没有其他标准方法可以获取 EJB 实例。如果您使用的是 EJB 3.1,则 java:globaljava:appjava:module 中的绑定(bind)是明确定义的,并且不能由开发人员更改。

java:global/MyApp/MyModule/MyBean!com.example.MyIntf
java:app/MyModule/MyBean!com.example.MyIntf
java:module/MyBean!com.example.MyIntf

这实际上是通过名称来定位 EJB。 (它确实需要 JNDI,但从您的描述中并不清楚为什么 JNDI 本身会出现问题,尽管我确实理解为什么绑定(bind)是一个问题。)如果您知道 EJB 仅支持一个接口(interface),则可以省略 ! com.example.MyIntf.

关于jakarta-ee - 通过名称访问 session bean,无需 JNDI 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313210/

相关文章:

java - Glassfish 中加载的类总数

java - 使用序列化将对象传递给另一个 JVM - 相同的 Java 版本和 jars(都运行我们的应用程序)

jpa - OpenJPA 是否适用于 Glassfish?

java - 如果不在事务中,Hibernate session.update 不工作

java - 如何处理java.lang.OutOfMemoryError : GC overhead limit exceeded gracefully?

java - 在有状态的 ejb 扩展中通过查找找到的 JPA 实体不受管理

java - EJB客户端如何定位没有url的EJB服务器?

java - EntityManager JDBC 连接使用

java - Spring框架bean

java - ApplicationContextAware 与 Setter 注入(inject)