【发布时间】:2011-07-26 17:17:07
【问题描述】:
伙计们,
每次新版本的 JBoss 推出时,我都不得不重新学习并在这些东西上浪费时间,这让我非常恼火。
我有一个在 JNDI 空间中发现并声明的无状态 EJB:
10:01:53,044 INFO [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
DTalk/UserManager/local - EJB3.x Default Local Business Interface
DTalk/UserManager/local-com.doctalk.ejb.UserManagerLocal - EJB3.x Local Business Interface
我需要在 servlet 中使用这个 EJB,它是战争的一部分,战争是包含 EJB 的 EAR 的一部分。我想用注射来做。
当我使用最直观的符号时:
@EJB
private UserManager userManager;
我在 JBoss 日志中发现异常。
当我使用更华丽的符号时,例如:
@EJB( mappedName = "UserManager" )
private UserManager userManager;
或者
@EJB( mappedName = "DTalk/UserManager/local" ) // EAR is called DTalk
private UserManager userManager;
我在 jboss 中没有遇到任何注入错误,但注入的 bean 为空。
这令人抓狂,而且是对时间的巨大浪费,让我质疑为什么我不放弃 Eclipse/jboss 工具专营权,转而支持 NetBeans 和 GlsssFish。
感谢任何见解。
谢谢。
【问题讨论】:
-
您似乎有各种误解需要澄清。您不愿重新学习的“新东西”独立于 JBoss。它们反映了新的 Java 规范。理论上,新版本的 GlassFish 将被更新以支持与 JBoss 相同的新 JSR。没有人强迫你使用新版本的 JBoss,对吧?此外,您不要将 Eclipse/JBoss 配对使用,或将 NetBeans/GlassFish 配对使用。应用服务器可与任何主要 IDE 完全互操作。
-
嗨,马特,感谢您的来信。既然我做了无用的咆哮,我应该得到一个无用的回应。但是,您关于应用服务器与主要 IDE 互操作的评论有点理想化。如果您喜欢这种类型的东西,或者说将耳朵钉在墙上,它们可能可以互操作。话虽这么说,你有我的答案,还是只有咆哮?
-
使用最小的
@EJB private UserManager userManager;注入时会出现什么异常? -
嗨,Matt,当我应该引用本地接口时,我在 servlet 中使用了 bean 类。再次感谢您的回复。
标签: dependency-injection ejb-3.0 jboss6.x