我有一个ear,它使用数据源(用于JPA持久性单元)。现在,我需要在同一个jboss中部署这个ear的多个版本,每个版本都指向不同的数据库。
我怎么处理这个。
我已经看到,仅在ear中部署数据源xml文件是不够的,每个ear中都有不同的参数(jdbc url/user/password),因为数据源是全局范围的,并且将由所有的ear共享。
我是否需要为每个ear使用不同的数据源名称,并为每个部署更改persistence.xml文件?没有别的选择了吗?
我正在使用JBoss 6。
编辑:正如我说的,数据源用于JPA单元,但我没有提到相同的数据源直接在几个需要直接jdbc的类中使用。因此,更改数据源的名称并不是一个好的选择。
发布于 2011-12-20 18:05:40
我认为没有任何选择可以这样做。JBoss总是在全局范围内观察数据源。理论上,@DataSourceDefinition或data-source元素在application.xml中可以被应用范围。
不幸的是,这个数据源在JBoss中似乎根本不能作为6工作,即使它能够工作,Jaikiran也指出,无论如何都不允许将这样的数据源用于持久性单元。
见http://community.jboss.org/thread/161032和https://issues.jboss.org/browse/JBAS-8816
但是,如果您已经在每个EAR中放置了不同的*-ds.xml文件,那么在每个EAR中放置一个不同的persistence.xml也不会那么糟糕,对吗?至少您有持久化单元提供给您的间接方向。如果数据源名称直接在EAR内的许多地方使用,情况会更糟。
这可能不是一个选项,但以防万一,GlassFish确实允许嵌入式数据源在应用范围内。
如果您对JBoss的这个特性感兴趣,请在这里表示:http://community.jboss.org/message/642506
https://stackoverflow.com/questions/8578898
复制相似问题