gpt4 book ai didi

java - 企业应用程序的瘦(更)独立客户端

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:22 28 4
gpt4 key购买 nike

首先介绍一下背景:

我正在开发一个带有 EJB 模块和应用程序客户端模块的企业应用程序 (ear)。我还使用 hibernate JPA 来实现持久性,并使用 swingx 来实现 GUI。这些是唯一的第三方 atm。此应用程序部署在 Glassfish 上。

一切都很顺利,直到我第一次部署我的应用程序并尝试通过 Java Web Start 启动它。我遇到了主要的障碍——JWS 不喜欢 hibernate3.jar,提示它没有签名,尽管它是。我已经描述了问题 here如果你有兴趣。无论如何,它可能与此有关 unresolved bug在 JVM 中。 JWS 还有其他一些我不喜欢的地方,但现在这些都不重要了。

当前方法

  • 考虑到这个问题,我想我会自己部署应用程序(我计划编写某种自动更新程序来保持所有内容同步)。所以我按照 here 中的说明进行操作一切都很顺利,除了我需要部署到客户端的应用程序容器大约是 40 MB!!!。这太过分了!

  • 好的,所以我说过我将放弃应用程序容器,创建一个独立的客户端通过 JNDI 进行 EJB 查找并只包含最少的内容。

我卡在这里了!

这是我使用的 JNDI 查找:

Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
prop.put("org.omg.CORBA.ORBInitialHost", "bogdan-pc");
prop.put("org.omg.CORBA.ORBInitialPort", "3700");
try {
InitialContext ctx = new InitialContext(prop);

DatabaseCacheEJBRemote service = (DatabaseCacheEJBRemote) ctx.lookup("ejbs.DatabaseCacheEJBRemote");
System.out.println("count: " + service.getProductionCount());

} catch (NamingException ex) {
Logger.getLogger(MyFrame.class.getName()).log(Level.SEVERE, null, ex);
}

1) 我认为如果包含 appserv-rt.jar 和 javaee.jar 就足够了。显然我需要来自 GF 的其他东西...问题是我需要部署到客户端以使 EJB 的查找工作的最低限度是多少?

2) 为什么我需要包含所有 ejb 模块依赖项(如 hibernate 库)?我没有在我的客户端的任何地方使用来自 hibernate 的东西......

感谢阅读这篇长文!

编辑:

关于我的环境的一些细节:

  • Java 1.6.0_21
  • GF 3.0.1
  • Windows(XP/2003/7)

最佳答案

考虑使用 Web 服务将您的桌面应用程序连接到应用程序服务器。从 Java EE 6 开始,这要容易得多,因为您只需注释一些 session bean(不太确定细节)就可以成为 Web 服务。这是一个“瘦”解决方案,可以通过 http(s) 完成连接,因此标准端口 80/443 不应在私有(private)或公司网络中被阻止。

关于java - 企业应用程序的瘦(更)独立客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646302/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com