2010-12-09 24 views
0

问题想法来定义的Java体系摆动的JavaFX/RMI/EJB3.0应用

我们参与了一个新的项目,开发与几个PC的应用程序,将作为通用计算机。还有一台计算机不时地作为主控机器来控制客户的所有过程。那台计算机必须通过服务器机器向所有其他机器发送消息,请求注册协助。那时,在客户端机器上运行的进程必须获得对计算机的控制,并且充当运行该应用程序的从机,直到从主机发送新消息释放它们。之后,客户机再次作为通用计算机。

The following scheme试图解释通过服务器的CM(控制机)的SM(从机)的涨幅访问之后发生了什么(SRVR)

  1. 控制机器CM发送消息,注册协助服务器 2 SRVR接收消息,记录一些信息,并广播所述寄存器辅助消息到SMS
  2. 的运行SM过程等待消息获得总量控制在每个SM
  3. 用户通过一个视图中选择的动作SM和机器发送一个响应于
  4. 的SRVR接收响应,并将其广播到所有的机器,包括结果机(RM)来更新所述服务器(SRVR)与新的状态的观点
  5. 的CM发送结束寄存器的SRVR给SRVR的消息。
  6. SRVR将消息广播到所有SM,应用程序视图关闭,应用程序再次进入侦听状态。

指出:

  • 一切都需要某种形式的Java技术
  • 所有的机器都乳宁的GNU/Linux/GNOME(Ubuntu的)做
  • JPA是强制性用于日志记录和持久性
  • JavaFX将根据Oracle进行更改,因为他们正在考虑放弃脚本语言

的问题是:

  1. 您应该使用哪个组合Java技术的一种观点?我的意见是使用Swing,并可能通过SwingComponent.wrap(loginPanel)将其嵌入到FX中,以帮助平面设计师做出更好的视觉工作(这是此应用程序中的必备工具)。请考虑绑定选项JSR-295(现在已经死了,因为我可以看到)或一些适当的选择。

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

  3. 如果SRVR使用Java EE与EJB 3.0访问远程对象,可以吗?如果是这样,你将如何整合/模型/ EJB与RMI。我对RMI/EJB集成没有太大的经验,我不确定它是否正确。特别是因为EJB规范已经信任RMI。但是,那么如何从会话Bean(我可以看到有状态的)广播消息来更新视图?

  4. 在SM中选择的任何选项必须在所有注册为观察者的视图(其他SM,RM和CM)中查看。你会为此建议一个模型/架构/产品吗?

  5. 一旦SM应用程序被唤醒,哪种方法可以使SM应用程序获得完全控制权? - 请记住,它是Linux-

  6. 观察者模式如何应用于分布式环境?

  7. 硬件安排是否正确适用于此应用程序?

我知道这些都是很多的问题,我不是要开始这个讨论,我知道可以有很多不同的意见,我希望听到所有的人,包括实施细则。我正在寻找来自你们的一些反馈,你的意见将受到高度赞赏。提前致谢!

回答

0

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

1.您将使用哪种Java技术组合?我的意见是使用Swing,并可能通过SwingComponent.wrap(loginPanel)将其嵌入到FX中,以帮助平面设计师做出更好的视觉工作(这是此应用程序中的必备工具)。请考虑绑定选项JSR-295(现在已经死了,因为我可以看到)或一些适当的选择。

在这种情况下使用Swing,需要考虑的是它是一种最稳定的技术,并且如果毕竟JavaFX将成为一个库,它可以在应用后给予更好的方面,现在来看使用Swing定制LAF

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

这个需求是通过shell脚本和ssh完成的。在某些更新之后,客户端应用程序被重新部署到客户端机器上

3.如果SRVR使用JEE和EJB 3.0访问远程对象,那么可以吗?如果是这样,你将如何整合/模型/ EJB与RMI。我对RMI/EJB集成没有太大的经验,我不确定它是否正确。特别是因为EJB规范已经信任RMI。但是,那么如何从会话Bean(我可以看到有状态的)广播消息来更新视图?

RMI架构很简单。在这种情况下,JBoss A.S.应用程序是通过rmiregistry部署在每台客户端机器上的RMI服务器的客户端。当客户端应用程序继续时,RMI存根是服务器和客户端之间唯一的共享类,该接口允许您调用客户端方法。请注意使您的JPA模型类可序列化。

4.在SM中选择的任何选项必须在所有注册为观察者的视图(其他SM,RM和CM)中查看。你会为此建议一个模型/架构/产品吗?

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

5.一旦SM应用程序被唤醒后,哪种方法可以使SM应用程序获得完全控制权?请注意,这是Linux-

那么,Java Swing的JFrame有一种方法来维护窗口ALWAYS_ON_TOP。如果将其与UNDECORATED_FRAME结合使用,其他应用程序将继续运行,但它们永远不会实现焦点。

6.如何将观察者模式应用于分布式环境?

它以相同的方式应用,我们只需要注意何时注册观察者以及何时注销它们。

7.硬件安排是否适用于此应用程序?

硬件安排按照问题中包含的图形显示的方式部署。

感谢所有那至少检查了问题。

相关问题