Cayenne包含了全功能的事件机制。允许创建本地或者分布式的事件请求。它的事件机制有强大而通用的功能,没有绑定到Cayenne持久化特性上,可以用于任何的程序。重要特性如下:
- 事件发出者不需要处理事件委派的详情,通过EventManager,监听器处理和派发。
- 可注册任何类型的监听器,监听器不许实现特定的接口。
- 不许显式地取消监听器注册。超出程序执行到范围或事件对象超出范围,监听器会注销。
- 支持本地或远程派发。远程派发可以通过实现EventBridge,任意的转换。有两种预制的实现 - JMS 以及使用JavaGroups。
- 分派可以同步完成也可以异步完成。同步时事件发出者等待所有监听器完成,异步将事件发送到队列,并且无需等待处理过程完成。
- 相似行为的独立监听器可以注册为阻塞或者非阻塞的。
| 最常见的错误时使用EventSubject时候没有给它提供一个引用,将会引起自动过早解除注册所有的监听器。 一个有效的方法是:1 如果所有发送者的实例是作为通用的对象,把事件发送者的类设置为“public static final”;2 如果这个实例仅仅与某个项目有关,将发送者对象实例设置为 ivar。 |
DataNode obtains connections via a javax.sql.DataSource. If an application is deployed in a J2EE container, DataSource is normally provided by container via JNDI. For standalone applications (or if you don't want to use JNDI) Cayenne provides its own DataSource that includes connection pooling features. Whenever you select org.apache.cayenne.conf.DriverDataSourceFactory in the Modeler, you are choosing to use Cayenne DataSource.
Cayenne 数据源实现在org.apache.cayenne.conn 包,并且与框架其他部分完全独立。因为Cayenne数据源是被自动选择的, 一般情况下用户不需要关系实现细节。One notable exception are applications requiring users to interactively enter database login information. In this case you can write your own DataSource wrapper, and internally instantiate Cayenne DataSource (org.apache.cayenne.conn.PoolManager) after the user provides login and password.

本文详细介绍了Cayenne的事件机制特点,包括事件的本地与远程分发、监听器管理等,并深入探讨了Cayenne的数据源实现方式,特别是其连接池功能及其在不同应用场景下的使用。
402

被折叠的 条评论
为什么被折叠?



