WebSphere中的XA非XA数据源

时间:2018-01-18 22:44:45

标签: java-ee datasource jta xa ejb-timer

我目前正致力于在共享的WebSphere上运行的Web应用程序。此应用程序使用数据源(与其他应用程序共享)和持久EJB计时器。

由于EJB Timer是持久性的,因此WebSphere使用自己的数据源来将EJB Timer状态持久化到数据库中。 (用于WebSphere的内部管理)

Application的EJB Timer调用DAO我的“创建方法”。

所有都是通过JTA交易管理的。

我想找到适用于数据源的最佳“策略”。在互联网上进行了几次搜索后,我仍处于黑暗中。

如何配置数据源?

  • 是否应在XA中使用两个数据源?
  • 是否可以使用非XA数据源来管理我的EJB计时器(WebSphere)和XA数据源,以便在我的EJB(创建方法)中完成处理?

在我看来,所有数据源都应该在非XA ...

在共享环境中使用数据源时,最佳做法是什么?是否需要为每个应用程序使用一个数据源(指向同一个数据库)或每个数据库只有一个数据源?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

我不确定你对'共享'WebSphere的意思,但我认为你的意思是运行多个应用程序的app服务器的实例。 你的问题:

  

是否应在XA中使用两个数据源?一般不一定是两个数据源,而是两个或多个资源。数据源以外的资源可以参与XA事务。在   一般情况下,如果事务不涉及多个数据库资源,则需要   使用非XA数据源来执行该事务。 是否可以使用非XA   用于管理我的EJB Timer和XA数据源的数据源   在EJB中完成的处理?是的,确实如此。你也说过   由于EJB Timer是持久性的,因此WebSphere使用自己的数据源...... 确实使用了默认数据源   默认,但您可以自由配置ejb计时器服务   另一个数据源。 每个应用程序是否需要使用一个数据源(指向同一个数据库)或每个数据库只有一个数据源?不需要为每个应用程序使用DS,但可能需要依赖根据您的要求。由于企业环境的复杂性,没有简单的最佳实践。显然,如果您的数据存储在多个后端中,则需要多个数据源。如果您的所有数据都存储在一个后端中,则使用单个DS可能有意义。