从远程独立客户端调用 EJB

Posted

技术标签:

【中文标题】从远程独立客户端调用 EJB【英文标题】:calling EJB from remote standalone client 【发布时间】:2013-04-30 19:10:33 【问题描述】:

我在将独立桌面客户端与 Jboss AS 上的 ejb 连接时遇到问题。所以问题是如何在带有swing windows的java SE中从独立客户端远程调用EJB类?另一方面,我的概念有问题吗?

图片链接:http://i.imgur.com/ZnmRROU.jpg

【问题讨论】:

将 EJB 方法用作 Web 服务。 虽然 Web 服务很有吸引力,但 RMI 仍然有用。我发现从客户端使用 EJB 3 相当简单。您遇到了哪些具体问题? 你的架构图看起来很标准,你也需要调查一下你的网络架构,非http流量经常会出现网络权限问题。 【参考方案1】:

首先,阅读这篇文章EJB invocations from a remote client using JNDI。

    你的类路径中需要一个名为“jboss-ejb-client.properties”的文件,该文件需要 连接到 jboss 服务器的基本配置,例如:

    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false 远程连接=默认 remote.connection.default.host=localhost 远程连接默认端口 = 4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

    创建 EJB 远程代理

    Properties p = new Properties();
    p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    final Context context = new InitialContext(p);
    final String appName = "YOUR APP NAME";
    final String moduleName = "YOUR EJB MODULE NAME";
    final String distinctName = "DISTINCT NAME";
    final String beanName = "Your bean name";
    final String viewClassName = ClienteDAORemote.class.getName();
    String path = "ejb:" + appName + "/" + moduleName + "/"
            + distinctName + "/" + beanName + "!" + viewClassName;
    Object o = context.lookup(path);
    return (RemoteBean) o; //Cast to your remote interface
    

你需要:

    带有远程接口的 EJB 独立客户端中的界面副本 我的属性文件用于本地和不安全的连接。

示例实现在this file 中。它是一个连接到 EJB 服务的示例应用程序,整个 repo 就像您的概念:

    使用 JSF + PrimeFaces 的 Web 应用程序 EJB 业务层 JPA 与休眠 独立客户端 EJB 网络服务

对不起,我的英语不好,干杯。

【讨论】:

不错的答案,但我能否像桌面应用程序一样在 jboss 服务器之外运行这个独立客户端?第二件事是关于实体,我有大约 5 个,我是否必须为每个一个和一个制作 bean 来管理数据库,还是我可以在一个 bean 中拥有所有? 是的,在Repository你可以看到一个客户端,我只在同一台机器上测试客户端,但是如果你提供密码并让jboss从外部监听,那么你应该' n 有问题。其次,我建议您为每个实体设置 5 个实体和一个 bean,例如 DAO,但您可以在一个 bean 中包含所有方法和所有逻辑。干杯 您好,我遇到了与此相关的问题,我发布了一个问题。请你看看这里好吗? ***.com/questions/70353500/…

以上是关于从远程独立客户端调用 EJB的主要内容,如果未能解决你的问题,请参考以下文章

从 Tomcat Web 应用程序调用的 Weblogic 上部署的远程 Ejb bean

EJB远程客户端从JBoss AS 7.1迁移到Wildfly 8.1

Wildfly 远程 EJB 调用

远程 EJB 调用的事务

EJB是什么

无法在 JBoss 的上下文中从客户端应用程序获取远程 ejb