Deployment JBoss6:如何使用datasource拥有同一ear的多个版本

Deployment JBoss6:如何使用datasource拥有同一ear的多个版本,deployment,datasource,ear,jboss6.x,Deployment,Datasource,Ear,Jboss6.x,我有一个将数据源用于JPA持久化单元的ear。 现在我需要在同一jboss中部署多个版本的ear,每个版本都指向不同的数据库 我该怎么办 我已经看到,在ear中部署数据源xml文件是不够的,因为数据源是全局范围的,并且将由所有ear共享,所以每个ear JDBCURL/user/password中都有不同的参数 我是否需要为每个ear使用不同的数据源名称,并为每个部署更改persistence.xml文件?没有其他选择吗 我正在使用JBoss6 编辑:更多细节 正如我所说,数据源用于JPA持久化

我有一个将数据源用于JPA持久化单元的ear。 现在我需要在同一jboss中部署多个版本的ear,每个版本都指向不同的数据库

我该怎么办

我已经看到,在ear中部署数据源xml文件是不够的,因为数据源是全局范围的,并且将由所有ear共享,所以每个ear JDBCURL/user/password中都有不同的参数

我是否需要为每个ear使用不同的数据源名称,并为每个部署更改persistence.xml文件?没有其他选择吗

我正在使用JBoss6

编辑:更多细节
正如我所说,数据源用于JPA持久化单元,但我没有提到同一数据源直接用于几个需要直接进行jdbc访问的类中。因此,更改数据源的名称不是一个好的选择。

我认为没有任何选项可以这样做。JBoss一如既往地在全球范围内确定数据源的范围。理论上,application.xml中有@DataSourceDefinition或datasource元素可以是应用程序范围

不幸的是,这一个在JBoss AS 6中似乎根本不起作用,即使它能起作用,Jaikiran Pai也指出,这样的数据源无论如何都不允许用于持久化单元

看到和

但是,如果您已经在每个EAR中放置了不同的*-ds.xml文件,那么在每个EAR中放置不同的persistence.xml也不会太糟糕,是吗?至少您拥有持久性单元提供的间接性。如果在EAR中的许多地方直接使用数据源名称,情况会更糟

这可能不是一个选项,但为了以防万一,GlassFish确实允许应用程序范围内的嵌入式数据源


如果您对JBoss AS的这个特性感兴趣,您可能想在这里表达一下:

我不知道。数据源在JBoss JCA中是全局范围的。我编辑了这个问题以添加更多细节。正如我所说,修改数据源名称不是一个好的选择,因为我在几个需要直接访问JDBC的类中也使用相同的数据源。