0

我想从这样的 Swing Client 访问在 Liberty Server 上运行的远程 EJB:

Object found = new InitialContext().lookup(
"corbaloc:iiop:localhost:2809#ejb/ear/ejb.jar/package/Bean#com.package.BeanRemote);

我收到了那个错误:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or in an application resource file: java.naming.factory.initial
                    at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:691)
                    at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
                    at java.naming/javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:342)
                    at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)
                    at com.package.ClassMain.main(ClassMain.java:43)

如何建立与 Liberty 的联系?需要帮助请

4

1 回答 1

0

我强烈建议您重新设计您的应用程序以使用 JAX-RS(通过 http 休息)而不是远程 EJB。只需使用外观模式并将您的 EJB 包装为 REST 端点,并在 Swing 端使用 Rest 客户端。

有几个原因:

  • 远程 EJB 现在几乎是死技术
  • http/rest 对防火墙/网络/容器更友好
  • http/rest 与客户端无关 - 如果您以后想将客户端从 Swing 更改为 web/JS,那会容易得多

但是如果你真的坚持,设置远程EJB并不是很简单。

最简单的方法是使用Liberty Application 客户端并从那里运行您的 Swing 应用程序。

如果您不能使用它,则需要获取传统的 WebSphere Application Server Client,并使用该 com.ibm.ws.ejb.thinclient_8.5.0.jar 提供的客户端 jar。如果客户端使用非 IBM java 运行,您还需要将 orb jar 添加到类路径 (com.ibm.ws.orb_8.5.0.jar)。

请参阅这些链接:

所以总而言之,重写通常会更简单,更有益。

于 2021-03-08T11:54:47.213 回答