【发布时间】:2011-04-08 11:02:28
【问题描述】:
先介绍一点背景:
我正在开发一个带有 EJB 模块和应用程序客户端模块的企业应用程序 (ear)。我还使用 hibernate JPA 来实现持久性,并使用 swingx 来实现 GUI。这些是唯一的第三方自动取款机。此应用程序部署在 Glassfish 上。
在我第一次部署我的应用程序并尝试通过 Java Web Start 启动它之前,一切都很顺利。我遇到了主要的障碍 - JWS 不喜欢 hibernate3.jar,抱怨它没有签名,尽管它是。如果您有兴趣,我已经描述了问题here。无论如何,它可能与 JVM 中的 unresolved bug 有关。 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-module 依赖项(如休眠库)?我没有在我的客户端中的任何地方使用来自休眠的东西......
感谢您阅读这篇长文!
编辑:
关于我的环境的一些细节:
- Java 1.6.0_21
- GF 3.0.1
- Windows(XP/2003/7)
【问题讨论】:
标签: java deployment jakarta-ee glassfish ejb