假设一个 CLI 或 Swing 接口客户端,如何通过 Liberty 访问远程 Bean

Assuming a CLI or Swing interface client, how is a remote Bean accessed through Liberty

我想像这样从 swing 客户端访问 Liberty 服务器上的远程 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 的连接? 需要帮助

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

有几个原因:

  • 远程 EJB 现在几乎是死技术
  • http/rest更firewall/network/container友好
  • http/rest 与客户端无关——如果您稍后想将客户端从 Swing 更改为 web/JS,这会容易得多

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

最简单的方法是从那里使用 Liberty Application client 和 运行 您的 Swing 应用程序。

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

查看这些链接:

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