Seam注入在Ejb3中如何工作
我们正在使用
- Seam 2.2.0
- Java 1.6.14
- Weblogic 10.3.1.0(名为 11g Doh!)
我已经查看了
但是我仍然不明白如何将 EJB3 bean 注入 JSF 支持 bean 。在我看来,我必须(如果我错了,请纠正我)
- 用@Name注释我的支持bean
- 用@Name注释我的EJB3 bean
- 在支持bean中使用@In注释
- 在WAR中放置一个空的seam.properties文件包含支持 bean
- 将空的 seam.properties 文件放入包含 EJB 的 JAR 中
- 在 EJB 的 ejb-jar.xml 中设置 Seam 拦截器
我不需要在某处设置一些 JNDI URL 吗? Seam 究竟如何找到 EJB? 拦截器够用吗?
这也意味着我必须在我的 EJB 存档中添加一个 seam 依赖项(因为 @Name 注释)。因此,Web 层(Seam)“溢出”到我的业务逻辑(EJB)中。这是推荐的方法吗?
我在这里错过了什么吗?
答案: 中设置 JNDI 模式(这就是我所做的)
- 在EJB 本身
- 显然,您可以按照 Nathan 的建议,使用 @JndiName 注释或web.xml 文件或
- elements.xml 文件或
- seam.properties 文件
We are using
- Seam 2.2.0
- Java 1.6.14
- Weblogic 10.3.1.0 (named 11g Doh!)
I have looked at
However I still do not understand how to inject an EJB3 bean into a JSF backing bean. It seems to me that I have to (correct me if I am wrong)
- Annotate with @Name my backing bean
- Annotate with @Name my EJB3 bean
- Use the @In annotation in the backing bean
- Put an empty seam.properties file in the WAR that contains the backing bean
- Put an empty seam.properties file in the JAR that contains the EJB
- Set up a Seam interceptor in ejb-jar.xml of the EJB
Don't I need to setup some JNDI URL somewhere? How exactly does Seam will find the EJB?
The interceptor is enough?
Also this means that I have to add a seam dependency in my EJB archive (because of the @Name annotation). So the web layer (Seam) "spills" into my business logic (EJB). Is this the recommended approach?
Am I missing something here?
Answer:
Apparently you can set the JNDI pattern in
- The EJB itself with the @JndiName annotation or
- The web.xml file or
- The components.xml file or
- The seam.properties file as Nathan suggested (This is what I did)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
三件事:
1) 不再有与 EJB 会话 bean 分离的支持 bean。
2) 有一个 JNDI url,该模式在 seam.properties 中设置(Java Persistence with Hibernate 中的 JBoss 示例看起来像
Seam 扩展了表达式语言评估器,其版本了解其新范围 。
3) Seam 不是一个 Web 框架,它更像是一个应用程序堆栈,可以使 JSF、EJB3 和 Hibernate 更好地协同工作,因此拥有 Seam 注释不会有什么坏处 在您的 EJB 中。
Three things:
1) There is no backing bean separate from the EJB session bean anymore.
2) There is a JNDI url, the pattern is set in seam.properties (the example for JBoss in Java Persistence with Hibernate looks like
Seam extends the expression language evaluator with a version that knows about its new scopes and knows to where to look for the EJBs.
3) Seam isn't a web framework, it is more like an application stack that makes JSF, EJB3 and Hibernate all play better together, so it shouldn't hurt that you have Seam annotations in your EJBs.
我的答案是关于您想要的内容的汇编
请参阅启用WebLogic 10.3.2 (11g)(两个答案)和启用@Stateless @In-@Out-jection
并参见这里 Seam 参考文档说明了在使用 Weblogic 时应该如何部署 Seam 应用程序
My answer is a compilation about you want
See Enabling WebLogic 10.3.2 (11g) (both answers) And Enabling @Stateless @In-@Out-jection
And see here what Seam reference documentation says how you should deploy your Seam application when using Weblogic
大多数答案都可以在 Seam 酒店预订示例中找到。您的配置可能会有所不同,因为您使用的是 WebLogic 而不是 JBoss。
Most of these answers are available in the Seam hotel booking example. Your configuration may be different because you are using WebLogic rather than JBoss.