假设一个 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).
查看这些链接:
- how-to-set-up-thin-client-to-call-remote-ejb-on-liberty
- Running the IBM Thin Client for Enterprise JavaBeans (EJB)
- Using enterprise JavaBeans with remote interfaces on 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).
查看这些链接:
- how-to-set-up-thin-client-to-call-remote-ejb-on-liberty
- Running the IBM Thin Client for Enterprise JavaBeans (EJB)
- Using enterprise JavaBeans with remote interfaces on Liberty
所以总而言之,重写通常会更简单、更有益。