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