Hows在Ejb3中进行Seam注射工作

时间:2010-04-12 08:36:27

标签: java ejb-3.0 seam jndi code-injection

我们正在使用

  • Seam 2.2.0
  • Java 1.6.14
  • Weblogic 10.3.1.0(名为11g Doh!)

我看了

但是我仍然不明白如何将EJB3 bean注入JSF支持bean。在我看来,如果我错了,我必须(纠正我)

  1. 使用@Name my backing bean
  2. 进行批注
  3. 使用@Name my EJB3 bean
  4. 进行批注
  5. 在支持bean中使用@In注释
  6. 在包含支持bean的WAR中放置一个空的seam.properties文件
  7. 在包含EJB的JAR中放置一个空的seam.properties文件
  8. 在EJB
  9. 的ejb-jar.xml中设置Seam拦截器

    我不需要在某处设置一些JNDI URL吗? Seam究竟会如何找到EJB? 拦截器足够吗?

    这也意味着我必须在我的EJB归档中添加一个seam依赖(因为@Name注释)。因此,Web层(Seam)“溢出”到我的业务逻辑(EJB)中。这是推荐的方法吗?

    我在这里错过了什么吗?

    答案: 显然你可以在

    中设置JNDI模式
    1. EJB本身带有@JndiName注释或
    2. web.xml文件或
    3. components.xml文件或
    4. 作为Nathan建议的seam.properties文件(这就是我所做的)

3 个答案:

答案 0 :(得分:3)

三件事:

1)不再有与EJB会话bean分离的支持bean。

2)有一个JNDI url,模式在seam.properties中设置( Java Persistence with Hibernate 中的JBoss示例

org.jboss.seam.core.init.jndiPattern=caveatEmptor/#{ejbName}/local

Seam使用了解其新范围的版本扩展表达式语言评估程序,并知道在哪里查找EJB。

3)Seam不是一个Web框架,它更像是一个使JSF,EJB3和Hibernate一起发挥得更好的应用程序堆栈,因此在EJB中使用Seam注释不应该受到伤害。

答案 1 :(得分:1)

我的答案是关于你想要的汇编

请参阅Enabling WebLogic 10.3.2 (11g)(两个答案)和Enabling @Stateless @In-@Out-jection

请参阅here Seam参考文档说明在使用Weblogic时应如何部署Seam应用程序

答案 2 :(得分:1)

Seam酒店预订示例中提供了大部分答案。您的配置可能不同,因为您使用的是WebLogic而不是JBoss。