首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改JNDI检索的数据源的属性

更改JNDI检索的数据源的属性
EN

Stack Overflow用户
提问于 2017-08-21 19:33:40
回答 1查看 507关注 0票数 0

在应用服务器(Jboss)上配置DataSource

代码语言:javascript
复制
     <subsystem xmlns="urn:jboss:domain:datasources:1.2">
        <datasources>
            <datasource jta="true" jndi-name="java:/TestDataSource" pool-name="TestDataSource" enabled="true" use-ccm="true" statistics-enabled="false">
                <connection-url>...</connection-url>
                <driver-class>com.informix.jdbc.IfxDriver</driver-class>
                <driver>informix</driver>
                <new-connection-sql>set lock mode to wait 15</new-connection-sql>
                <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>30</max-pool-size>
                    <flush-strategy>IdleConnections</flush-strategy>
                </pool>
                <security>
                    <user-name>...</user-name>
                    <password>...</password>
                </security>
                <validation>
                    <check-valid-connection-sql>...</check-valid-connection-sql>
                    <validate-on-match>true</validate-on-match>
                    <background-validation>true</background-validation>
                </validation>
                <timeout>
                    <set-tx-query-timeout>false</set-tx-query-timeout>
                    <blocking-timeout-millis>0</blocking-timeout-millis>
                    <idle-timeout-minutes>5</idle-timeout-minutes>
                    <query-timeout>0</query-timeout>
                    <use-try-lock>0</use-try-lock>
                    <allocation-retry>0</allocation-retry>
                    <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
                </timeout>
                <statement>
                    <prepared-statement-cache-size>100</prepared-statement-cache-size>
                    <share-prepared-statements>true</share-prepared-statements>
                </statement>
            </datasource>
        </subsystem>

DataSource是使用JNDI检索的。在将其作为bean返回之前,我想更改url和驱动程序类。所有其他已配置的属性应保持不变。DataSource接口不提供用于实现此目的的设置器。这类任务的最佳解决方案是什么?

代码语言:javascript
复制
@Configuration
public class DBConfig {
@Value("${datasource.test}")
private String dataSourceProperty;

@Bean
public DataSource dataSource() {
    final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
    dsLookup.setResourceRef(true);
    DataSource dataSource = dsLookup.getDataSource("java:/" + dataSourceProperty);

    // here before returning the datasource I would like to change the url and database driver, other configs should remain unchanged
    return dataSource;
}
}
EN

回答 1

Stack Overflow用户

发布于 2017-08-22 18:51:36

您需要将DataSource接口转换为具体的实现(例如,org.apache.tomcat.jdbc.pool.DataSource),然后只需使用具体类的setter方法:

代码语言:javascript
复制
org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource)dataSource;
tomcatDataSource.setUrl("...");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45796077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档