首页 Java事件处理模式 最后完稿。

欢迎大家参与讨论

写的很好,但要是能就某一部分深入一下就好了。

问一下,
-----------------------------
如果你的客户端和服务器端之间有防火墙,那么目前能够无障碍通过防火墙的协议只有Http了(Web Service也是基于http就是这个道理),既然使用http了,而Servlet是基于Http协议的,那么就需要通过servlet来访问EJB,这是我们最普遍的应用情况。

但是,如果你的客户端和服务器端可以放置在一个网络内,之间没有防火墙,那么就不必使用Servlet,直接使用Java调用RMI来访问EJB,这样性能是最好的,这时的Servlet大概只有用于控制Jsp的页面的输出了(MVC模式中的控制作用)。
--------------------------------

两个servlet得作用有什么不同?直接调用RMI访问EJB?

摘录

比如用户提请服务器计算一个数据,如果用户同时要求将计算结果向自己信箱发一封,那么我们看如何设计? 按照通常思维,这是一个次序问题,先在内存中计算数据,然后将结果发送到他的信箱,最后返回结果到用户端, 我们知道信件的发送是耗时的,因此,有可能网络的原因造成信件发送很慢,这是用户就一直等不到他的计算结果, 很显然,我们使用监控式事件模式来解决,让发信的事件由监控者去完成,只要需要时触发就可以了:

notifyObservers(email);

这样服务器在执行compute方法时,就没有发送邮件的等待,一直接继续执行。

就不会等待了吗?
不等待一定是多线程了对吗?
可以我看http://java.sun.com/j2se/1.4.1/docs/api/java/util/Observable.html
的描述,和Observable的源代码并不是多线程啊,是直接调用的:
...
for (int i = arrLocal.length-1; i>=0; i--)
((Observer)arrLocal).update(this, arg);
...

* <p>
* The order in which notifications will be delivered is unspecified.
* The default implementation provided in the Observerable class will
* notify Observers in the order in which they registered interest, but
* subclasses may change this order, use no guaranteed order, deliver
* notifications on separate threads, or may guarantee that their
* subclass follows this order, as they choose.
* <p>
* Note that this notification mechanism is has nothing to do with threads
* and is completely separate from the <tt>wait</tt> and <tt>notify</tt>
* mechanism of class <tt>Object</tt>.
* <p>

Banq 给出的例子不是多线程的,但是你可以另外开一个线程去调用notifyObservers(email);

1.我打算在工作流系统中,提供若干 事件,事件发生后的响应程序交给外围程序处理。

2.比如 流程开始、挂起、完成、中止事件。活动的开始、完成等事件。
3.我希望提供“同步”事件和“异步” 事件.等待 事件的响应代码执行完成的,主体程序才继续往下执行的,我认为是 同步事件。抛出事件,不等待响应代码完成就直接往下执行的,我认为是 异步事件。

4.在该种需求下,用哪些种事件机制好呢?

4. 如果大量使用了反射机制,其性能怎么样呢?


1.OSWorkflow提供了所谓的Function机制,即 step开始和结束以及Result(相当于转移)开始和结束时时允许调用自定义的Function,Function可以 实现为BeanSheel,BSF,或普通Java类。

2.JBPM提供了 事件处理机制,响应事件的Action注册到Event的Action中。

3.不知道BeanSheel性能怎么样?