事务性
当您用 XML 脚本对资源进行创建、更新或删除时,门户网站数据库中的更改将分组为事务。所有作为事务一部分的更改要么统统执行,要么统统不执行。在将数据库更新分组为事务时,XML 配置为该操作划分出两个不同的级别。
分组是由主请求元素的 transaction-level 属性定义的,此属性可以具有以下各值:
- 资源
- XML 脚本中的每个顶级资源都在一个独立的事务中进行处理。例如,具有完整布局的内容节点。如果发生错误,那么遇到该错误的资源之前的所有资源都已完全处理;将不会创建遇到该错误的资源,或者如果该资源已存在,那么它将保持不变。
- 请求
- 整个 XML 脚本都在一个事务中执行。如果发生错误,那么所有由脚本引起的数据库更改都会被撤销,并恢复原来的状态。注意,如果在大的 XML 脚本中使用此级别的事务性,那么可能会产生长时间运行的庞大数据库事务。结果可能会因事务持续时间超长或事务日志太大(具体取决于数据库的配置)而发生数据库错误。
- none
- 将不会打开任何显式事务以进行处理。这是缺省值。
事务性仅适用于门户网站数据库中的更改。由于以下各项资源都不保存在门户网站数据库中,因此事务中也不会包含它们:
- 部署到 WebSphere® Application Server 的 Portlet 的企业应用程序
- 用户和组信息
- 外部访问控制系统中的角色指定
这意味着什么呢?让我们举个例子来说明一下:如果在使用了 transaction-level="request" 的 XML 脚本中部署 WAR 文件,并且此 XML 脚本稍后在执行过程中发生错误,那么事务将被取消,因此将从门户网站数据库中除去此 Portlet 的条目。但是,对应的企业应用程序已经部署到了 WebSphere Application Server 且并没有除去。这不会影响门户网站的运行;您只要以后再次部署该 Portlet 即可。WebSphere Application Server 中也不过是有了一个用不到的企业应用程序而已。请手动将其除去。