java - 如何在 Jboss 6 中动态更改数据源连接 url

标签 java jpa jboss

我正在使用 Jboss AS6 和容器管理器 tracsaction。 通常我使用 mysql-ds.xml 中定义的单个 MYSQL 数据源。 现在我有一个用户要求,多个用户可以拥有不同的数据库内容。所以我计划为每个用户创建一个新数据库。将来我可以更改我的数据库设计。但现在为了快速解决问题,我需要找到一种在不同数据库之间交叉的方法。

这是我的默认配置。我需要更改数据库名称

<local-tx-datasource>
    <jndi-name>DefaultDS</jndi-name>
    <connection-url>jdbc:mysql://144.0.0.1:3306/**dbname**</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>password</password>

    <max-pool-size>100</max-pool-size>
    <min-pool-size>0</min-pool-size>
    <connection-property name="readOnly">false</connection-property>
  <autoReconnect>true</autoReconnect>
  <failOverReadOnly>false</failOverReadOnly>
    <maxReconnects>0</maxReconnects>
    <initialTimeout>15</initialTimeout>
    <idle-timeout-minutes>0</idle-timeout-minutes>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <!-- should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
-->
    <!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
  -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
  -->
</local-tx-datasource>

我正在使用容器管理器事务。我需要找到一种方法来更改数据源配置的连接 URL。然后清除实体管理器以连接新数据库。这可能吗

最佳答案

对于您的任务,您实际上可以只保存多个(在您的情况下为 5 个)持久性上下文。然后,您可以根据例如用户名选择链接到适当的上下文。这是最简单的解决方案。它可以工作,但所有 5 个上下文都将打开并保持连接。也许这就是您所需要的:从一方面来看,这个上下文总是可以使用的,不需要加热。

另一种选择是像在 Java SE 环境中一样手动构建持久性上下文。如果您无法持有很多资源并且切换不那么频繁(例如每天一次),这会很有帮助。

您可以找到很多描述如何在 Java SE 环境中使用 JPA 的文章。您可以以几乎相同的方式使用它们(因此您将不使用容器注入(inject)机制,而是通过原始 JNDI 查找 Persistnece Context)

https://dzone.com/articles/jpa-tutorial-setting-jpa-java http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/SettingUpJPA/SettingUpJPA.htm

关于java - 如何在 Jboss 6 中动态更改数据源连接 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227703/

相关文章:

java - Spring Boot JPA ManyToMany MappingException

service - CentOS 7 中的 JBoss 7 总是在路径/var/run/jboss-as 中寻找 jboss-as-standalone.pid

jboss as 7模块依赖浏览器工具

Java,如何根据其接口(interface)之一重新转换对象?

postgresql - 在 postgres 和 Hibernate 中使用主键序列时出错

java - 如何在另一个方法中使用一个方法的值?

java - 如何处理 REST Web 服务中的资源验证?

deployment - jboss wildfly 8 中的 resteasy-spring 模块

java - Neo4j - 事件监听器注册

java - cachedThreadPool 没有按我的预期工作