【问题标题】:Injecting a jBoss EJB to a JSF 2.0 managed bean running in a tomcat web application将 jBoss EJB 注入到运行在 tomcat Web 应用程序中的 JSF 2.0 托管 bean
【发布时间】:2011-10-08 01:54:17
【问题描述】:

找了好久,没找到解决办法,问题如下:

  1. 我在 jBoss 6.0 中部署了一个 EJB3 应用程序,带有远程 ejb。
  2. 我在 Tomcat 6.0 中部署了一个 Web 应用程序 (JSF 2.0)。

我不想在 jBoss 中运行 tomcat Web 应用程序,它是一个应用程序 在tomcat下运行,架构应该保持不变。

我不想手动查找 EJB(我想注入它),换句话说我不想这样做:

Properties properties = new Properties();                                                        
properties.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
properties.setProperty("java.naming.provider.url", "jnp://localhost:1099");                      
properties.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");   

Context c = new InitialContext();                                                                
MySB mySB = (MySB) c.lookup("MySB/remote"); 

例如,我需要将 jBoss EJB 注入到 Tomcat 应用程序中的托管 bean 中

@EJB(name="MySB/remote")
protected MySB mySB;

好像MySB/remote在tomcat本地JNDI中,但实际上是在后台从jBoss JNDI中查找的。​​p>

这可能吗?

【问题讨论】:

    标签: tomcat jakarta-ee ejb-3.0 jndi jboss6.x


    【解决方案1】:

    您可以使用 CDI 做到这一点。不幸的是,CDI 支持没有像 Tomcat 这样的标准 servlet 引擎提供,因此如果您想部署一个利用 CDI 注释的 JSF 应用程序,您需要获得 CDI 规范的实现。 JSR 299 的参考实现称为Weld。要安装它,您需要:

    1) 将 weld-servlet.jar 放入 JSF 应用程序的 WEB-INF\lib 文件夹

    2) 将以下侦听器定义添加到您的 web.xml:

    <listener>
        <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
    </listener> 
    

    3) 在应用程序的WEB-INF 文件夹中的 web.xml 和 faces-config.xml 文件旁边添加一个空的 beans.xml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
    </beans>
    

    最后,您需要在托管 bean 中 @Inject 您的 EJB。

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2013-07-28
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多