gpt4 book ai didi

java - Mybatis几个jndi名称

转载 作者:行者123 更新时间:2023-11-28 22:09:13 25 4
gpt4 key购买 nike

我有这样一个问题:不同的网络服务器有不同的 jndi 命名规则。因此,例如,如果在 Tomcat 中我想为数据源使用 jndi 名称,它将如下所示:

<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jdbc/myJndiName"/>
</dataSource>

但在 WebSphere 或 Jboss 中,我将不得不提供不带“comp/env”的 jndi 名称,例如

<dataSource type="JNDI">
<property name="data_source" value="java:jdbc/myJndiName"/>
</dataSource>

或者我在配置中提供的jndi名称。如果使用与 Tomcat 中相同的名称,使用“comp/env”前缀,显然是行不通的。

有什么办法可以使应用程序对不同的网络服务通用?我正在考虑编写自己的 DataSource 包装来检查 jndi 名称的可用性并正确设置它。有什么想法吗?

最佳答案

Mybatis 环境可能就是您正在寻找的。

http://mybatis.github.com/mybatis-3/configuration.html#environments

在您的情况下,配置可能类似于

<environments default="tomcat">
<environment id="tomcat">
<transactionManager type="JDBC"/>
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jdbc/myJndiName"/>
</dataSource>
</environment>
<environment id="websphere">
<transactionManager type="JDBC"/>
<dataSource type="JNDI">
<property name="data_source" value="java:jdbc/myJndiName"/>
</dataSource>
</environment>
</environments>

您需要为每个环境创建一个 sql session 工厂

InputStream in = Resources.getResourceAsStream("myconfig.xml");
SqlSessionFactory tomcatSessionFactory = new SqlSessionFactoryBuilder().build(in, "tomcat");
SqlSessionFactory websphereSessionFactory = new SqlSessionFactoryBuilder().build(in, "websphere");

关于java - Mybatis几个jndi名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com