对为现有 Java 企业应用程序项目创建独立客户端感到困惑?
Confusion about creating a standalone client for an existing Java enterprise application project?
我可以访问 Java 企业应用程序项目。在这个项目中有一个包含 EJB 项目的 EAR 文件,一个用于调用 EJB 项目的 Web 服务的动态 Web 项目,最后是一个 Web 客户端项目。 EAR 部署在 JBoss WildFly 应用程序服务器上。但是,我想为这个项目使用 JavaFX 创建一个独立的客户端。经过研究老S.O。帖子(是的,我在问这个问题之前阅读了其他帖子,但其中 none 足够清楚地解决了我的担忧)并且使用 Google 我只能找到过时的例子。我对以下相关主题感到困惑:
1) 为了从现有的 EJB 项目访问 类,您是否必须在独立客户端应用程序中创建远程接口的 副本 ,这些接口已经存在在 EJB 项目中? (这对我来说感觉不对)
2) 如果将 EJB 项目添加到客户端的类路径中,这是否会产生编译时错误,因为客户端代码在 运行 客户端应用程序时将无法访问服务器代码?
3) 无论何时创建新的 EJB 项目,Eclipse 都有一个创建 EJB 客户端项目的选项。这会自动在客户端代码中添加远程接口,而不会在服务器端留下任何远程接口。这是可以接受的吗?为了争论起见,如果您想要 Swing 中的客户端和 FX 中的客户端怎么办?他们都需要使用远程接口,所以我想你必须有一个包含远程接口的项目,然后为每个引用包含接口的项目的客户端创建一个项目。
我不是 JavaFX 专家,所以我不会在这里回答所有问题。但是,1.) 是一个相当简单的修复。
将您的接口从 EJB jar 中拉出到它们自己的 jar 中,并将其作为依赖项添加到 EJB 和客户端。如果您正在使用 Maven 或 Gradle(如果您没有,您应该问问自己为什么不使用),您可以在同一项目中包含构建此 'API' jar,以便您不必为将这些接口视为一个单独的项目而烦恼。例如,在 Maven 中,一种常见的方法是为您的 EJB 内容提供两个模块:'somethingsomething-api' 和 'somethingsomething-ejb'。 Maven 的多模块功能允许您将这些项目构建在一起,但将它们分开打包,这在您只想将您的接口和 bean 与另一个项目(如客户端)捆绑在一起时很重要,但不要 want/can将 EJB jar 中的所有其他好东西拉入客户端等。
我可以访问 Java 企业应用程序项目。在这个项目中有一个包含 EJB 项目的 EAR 文件,一个用于调用 EJB 项目的 Web 服务的动态 Web 项目,最后是一个 Web 客户端项目。 EAR 部署在 JBoss WildFly 应用程序服务器上。但是,我想为这个项目使用 JavaFX 创建一个独立的客户端。经过研究老S.O。帖子(是的,我在问这个问题之前阅读了其他帖子,但其中 none 足够清楚地解决了我的担忧)并且使用 Google 我只能找到过时的例子。我对以下相关主题感到困惑:
1) 为了从现有的 EJB 项目访问 类,您是否必须在独立客户端应用程序中创建远程接口的 副本 ,这些接口已经存在在 EJB 项目中? (这对我来说感觉不对)
2) 如果将 EJB 项目添加到客户端的类路径中,这是否会产生编译时错误,因为客户端代码在 运行 客户端应用程序时将无法访问服务器代码?
3) 无论何时创建新的 EJB 项目,Eclipse 都有一个创建 EJB 客户端项目的选项。这会自动在客户端代码中添加远程接口,而不会在服务器端留下任何远程接口。这是可以接受的吗?为了争论起见,如果您想要 Swing 中的客户端和 FX 中的客户端怎么办?他们都需要使用远程接口,所以我想你必须有一个包含远程接口的项目,然后为每个引用包含接口的项目的客户端创建一个项目。
我不是 JavaFX 专家,所以我不会在这里回答所有问题。但是,1.) 是一个相当简单的修复。
将您的接口从 EJB jar 中拉出到它们自己的 jar 中,并将其作为依赖项添加到 EJB 和客户端。如果您正在使用 Maven 或 Gradle(如果您没有,您应该问问自己为什么不使用),您可以在同一项目中包含构建此 'API' jar,以便您不必为将这些接口视为一个单独的项目而烦恼。例如,在 Maven 中,一种常见的方法是为您的 EJB 内容提供两个模块:'somethingsomething-api' 和 'somethingsomething-ejb'。 Maven 的多模块功能允许您将这些项目构建在一起,但将它们分开打包,这在您只想将您的接口和 bean 与另一个项目(如客户端)捆绑在一起时很重要,但不要 want/can将 EJB jar 中的所有其他好东西拉入客户端等。