客户端 - 服务器程序中逻辑的服务器端脚本的方法

时间:2012-02-19 18:34:10

标签: java servlets ejb server-side ejb-3.1

我正在寻找最佳实践或一般方法,使常规非程序员可以修改服务器端应用程序。它不需要热修改;它可以重新编译和重新部署。

假设系统位于EJB或Spring容器中。系统是消息驱动的(可能是EJB3.1)。有许多POJO从客户端应用程序(RCP或RIA)接收消息,对这些消息做出反应,并向同一个和其他客户端应用程序发送更多消息。使系统易于修改的最佳方法是什么?如果我正确地分离了服务器的逻辑组件,那么哪种技术或设计方法可以让逻辑POJO与新的POJO交换掉,从而改变应用程序的行为?

我认为我所描述的是战略模式。这些POJO可以从一组人类可读和可编辑的规则生成吗?像Drools这样的规则引擎是解决此问题的正确方法吗?

这是否可以与状态机生成器结合使用,以便每个状态都有一个输入消息列表和对每个状态的响应,转换规则等等?

玩具示例:

  • State_Evening
    • 输入sellStocks
      • 回复"晚上不能卖,等到白天。"
  • State_Day
    • 输入sellStocks
      • 做SellStocks
      • 回复"为 _ "
      • 出售的股票

现在我就这样写出来了,看起来脚本语言和编程几乎一样......

我正在寻找正确方向的指针。或者可能是我过于复杂的事情。也许我应该尽可能地将业务逻辑尽可能地分开并在代码中进行更改?

为清晰起见于2012年2月22日编辑

1 个答案:

答案 0 :(得分:1)

我同意JB Nizet关于手术刀的评论。

无论如何:对你的问题的一些答案:

  

Spring,Griffon,嵌入式Jetty,Servlet,EJB(或POJO?还是......?)   到目前为止这个平台是一个好方法吗?

EJB不会以这种方式工作,它们需要像Glassfish或Websphere Application Server这样的EJB容器。但是如果你使用Spring,那么你就不需要EJB(你有Spring Beans)。如果你使用Spring,那么你大多数都有一个Spring Servlet,所有的web东西都是由Spring MVC Framework处理的 - 这是来自classis Servelt编程的潜水员(没有框架)

动态更改某些代码的一种方法是使用脚本语言。因此,您可以使用例如Rino在JVM中运行java脚本代码。

但实际上,当我需要完成你的工作时,我会尝试为服务器和客户端实现一些框架,这样可以很容易地用java编写游戏。因此,您的学生可以使用普通的IDE,也可以使用maven来部署完整的应用程序。