为Swing JavaFX/RMI/EJB3.0应用程序定义java体系结构的想法

为Swing JavaFX/RMI/EJB3.0应用程序定义java体系结构的想法,java,swing,ejb-3.0,rmi,distributed-computing,Java,Swing,Ejb 3.0,Rmi,Distributed Computing,问题 我们正在参与一个新的项目,开发一个应用程序,其中包含多台PC机,这些PC机将充当通用计算机。还有一台计算机,它将不时充当主机,以获得对客户端所有进程的控制。该计算机必须通过服务器向所有其他计算机发送一条消息,例如请求注册帮助。此时,在客户端计算机中运行的进程必须获得计算机的控制,并充当运行该应用程序的从属计算机,直到主计算机发送新消息以释放它们为止。在此之后,客户端机器再次充当通用计算机 试图解释CM(控制机器)通过服务器(SRVR)访问SM(从属机器)后发生的情况 控制机器CM向服务器发

问题

我们正在参与一个新的项目,开发一个应用程序,其中包含多台PC机,这些PC机将充当通用计算机。还有一台计算机,它将不时充当主机,以获得对客户端所有进程的控制。该计算机必须通过服务器向所有其他计算机发送一条消息,例如请求注册帮助。此时,在客户端计算机中运行的进程必须获得计算机的控制,并充当运行该应用程序的从属计算机,直到主计算机发送新消息以释放它们为止。在此之后,客户端机器再次充当通用计算机

试图解释CM(控制机器)通过服务器(SRVR)访问SM(从属机器)后发生的情况

  • 控制机器CM向服务器发送消息以注册协助 2 SRVR接收消息,记录一些信息,并向SMs广播注册帮助消息
  • 等待消息的正在运行的SM进程在每个SM中获得总控制权
  • 用户通过SM中的视图选择动作,机器向SRVR发送响应
  • SRVR接收响应并将其广播到所有机器,包括结果机器(RM),以使用服务器(SRVR)中的新状态更新视图
  • CM向SRVR发送结束寄存器消息
  • SRVR向所有SMs广播消息,应用程序视图关闭,应用程序再次进入监听状态
  • 声明:

    • 一切都需要用某种Java技术来完成
    • 所有机器都运行GNU/Linux/Gnome(Ubuntu)
    • JPA对于日志记录和持久性是必需的
    • 根据Oracle的说法,JavaFX将会改变,因为他们正在考虑放弃脚本语言
    问题包括:

  • 您将在视图中使用哪种java技术组合?。我的观点是使用Swing,可能是通过SwingComponent.wrap(loginPanel)在FX中增强了这一点,以帮助图形设计师更好地完成视觉工作(在这个应用程序中是必须的)。请考虑JSR-95的绑定选项(现在我已经死了)或者一些适当的选择。
  • 您将如何维护更新的应用程序客户端,我的意见是通过JavaWebStart并将其作为小程序提供

  • 如果SRVR使用JavaEE和EJB3.0来访问远程对象,可以吗?如果是这样,您将如何将/model/EJB与RMI集成。我没有RMI/EJB集成方面的丰富经验,也不太确定它是否正确。特别是因为EJB规范已经信任RMI了。但是,如何从会话Bean(如我所见的有状态Bean)广播消息来更新视图呢

  • 在SM中选择的任何选项必须在注册为观察员的所有视图(其他SMs、RM和CM)中查看。你能推荐一个模型/架构/产品吗

  • 当SM应用程序的进程被唤醒时,哪种方法是使其获得完全控制的正确方法-记住,它是Linux-

  • 如何在分布式环境中应用观察者模式

  • 此应用程序的硬件配置是否正确


  • 我知道这些问题很多,我不打算就此展开讨论,我知道可能会有很多不同的意见,我有兴趣听取所有这些意见,包括实施细节。我正在寻求你们的一些反馈,你们的意见将受到高度赞赏。提前谢谢

    这就是我解决这个问题的方法

    1。您将在视图中使用哪种java技术组合?。我的观点是使用Swing,可能是通过SwingComponent.wrap(loginPanel)在FX中增强了这一点,以帮助图形设计师更好地完成视觉工作(在这个应用程序中是必须的)。请考虑JSR-95(现在我已经死了)或一些适当的替代方案的绑定选项。< /强>

    在本例中使用了Swing,考虑的是它是一种最稳定的技术,如果JavaFX最终将成为一个库,那么它可以用于为应用程序提供更好的方面,因为现在视图是使用Swing LAF定制的

    2。您将如何维护更新的应用程序客户端,我的意见是通过Java Web Start并将其作为小程序提供。

    通过shell脚本和ssh满足了需求。在一些更新之后,客户机应用程序被重新部署到客户机上

    3。如果SRVR使用JEE和EJB3.0来访问远程对象,可以吗?如果是这样,您将如何将/model/EJB与RMI集成。我没有RMI/EJB集成方面的丰富经验,也不太确定它是否正确。特别是因为EJB规范已经信任RMI了。但是如何从会话Bean(我可以看到有状态的)广播消息来更新视图呢?

    RMI体系结构很简单。在本例中,JBoss A.S.应用程序是通过RMI注册表部署在每台客户机上的RMI服务器的客户机。当客户端应用程序启动时,RMI存根是服务器和客户端之间唯一的共享类,此接口允许您调用客户端方法。小心使您的JPA模型类可序列化

    4。在SM中选择的任何选项必须在注册为观察员的所有视图(其他SMs、RM和CM)中查看。您能为此推荐一种型号/体系结构/产品吗。

    这是以与前一点相同的方式实现的,但需要注意的是,RMI不支持多播消息传递,因此,如果需要与许多注册客户端进行消息传递,请小心,因为如果有100台机器相互广播消息,则意味着发送100x100条消息