【问题标题】:Using Blazeds To Connect to a EJB on Glassfish在 Glassfish 上使用 Blazeds 连接到 EJB
【发布时间】:2011-04-27 01:51:36
【问题描述】:

任务是尝试直接连接到部署在 Glassfish 上的无状态 EJB。我已经通过 Web 服务完成了这项工作,我还可以通过调用使用 JNDI 查找和加载 bean 的远程 java 对象来连接到 EJB。我不能做的是使用 Blazeds 直接连接到 EJB。我正在使用 Ryan Norris 的 EBJ3Factory(从 adobe 网站下载)如下;

我的WEB-INF/flex/services-config.xml有;

<factories>
    <factory id="ejb3" class="com.adobe.ac.ejb.EJB3Factory" />
</factories>

我的WEB-INF/flex/remoting-config.xml有;

<destination id="MyEJB">
    <properties>
        <factory>ejb3</factory>
        <source>java:global/Together/PSearch!ejb.PSearch</source>  
    </properties>
</destination>

我有一个可以访问 bean 的简单 java 类,因此我可以使用 Blazeds 调用该类,然后调用该 bean;

public void getBean() {

    PSearch search;

    InitialContext ctx;
    try {
        ctx = new InitialContext();         

        search = (PSearch) ctx.lookup("java:global/Together/PSearch!ejb.PSearch");
        System.out.println("jndi okay");

    } catch (NamingException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
}

glassfish 中上下文的 asadmin 命令显示了我;

./asadmin list-jndi-entries --context java:global/Together

PSearch__3_x_Internal_RemoteBusinessHome__: javax.naming.Reference
PSearch!ejb.PSearchRemote: javax.naming.Reference
PSearch!ejb.PSearch: com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy
PSearch!ejb.PSearchLocal: com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy

然而,当我使用 Eclipse / Flash Builder 尝试导入 BlazeDS 服务时,我得到一个自省错误;

java:global/Together/PSearch/!ejb.PSearch is not available in the specified location

我也尝试将 remoting-config.xml 更改为指向 localremote 接口,但没有任何乐趣!

任何指针将不胜感激。

【问题讨论】:

    标签: apache-flex glassfish blazeds


    【解决方案1】:

    您可以做的一种解决方法是删除工厂 XML 元素,将源 JNDI 名称替换为 EJB 完全限定的类名称,并使用您尝试做的 BlazeDS RTS 服务使用 Flash Builder 创建服务。

    <destination id="MyEJB">
        <properties>            
            <source>packagename.EJBClassName</source>  
        </properties>
    </destination>
    

    当您在 Flex 项目中创建服务客户端、服务和值对象(返回类型等)后,将所有内容恢复原状:

    <destination id="MyEJB">
        <properties>
            <factory>ejb3</factory>
            <source>java:global/Together/PSearch!ejb.PSearch</source>  
        </properties>
    </destination>
    

    您实际上要做的是将 EJB 3.x 视为普通 POJO 进行自省,以便创建 AS3 类,并在您完成后使用工厂将目标更改为 EJB3 目标。

    我正在努力使这些步骤变得不必要。如果我有时间完成它,我会告诉你的。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 2012-06-18
      • 2010-10-20
      • 2017-05-14
      • 2015-05-02
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      相关资源
      最近更新 更多