我想写一个自定义BeanResolver用于 Spring 表达式语言解析表达式中的 EJB(例如 "@MyBean.property=='example-value'"
)。如何在不执行 JNDI 查找的情况下通过名称检索 Bean?我是否必须为我选择的应用程序服务器(即 glassfish)编写一个插件?
最佳答案
EE注入(inject)和JNDI查找是所有EJB的入口点;没有其他标准方法可以获取 EJB 实例。如果您使用的是 EJB 3.1,则 java:global
、java:app
和 java: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/