【问题标题】:Mybatis several jndi namesmybatis几个jndi名字
【发布时间】:2013-01-15 13:51:53
【问题描述】:

我有这样一个问题:不同的 web 服务器有不同的 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 名称的可用性并正确设置它。有什么想法吗?

【问题讨论】:

    标签: java tomcat jndi mybatis


    【解决方案1】:

    Mybatis 环境可能正是你要找的。​​p>

    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 会话工厂

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

    【讨论】:

      【解决方案2】:

      在 OSGI 环境(Aries JNDI)中,查找配置应该如下所示

      <environment id="development">
         <transactionManager type="JDBC"/>
          <dataSource type="JNDI">
          <property name="data_source" value="osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/Ds)"/>
        </dataSource>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-08
        • 2014-12-24
        • 2012-01-22
        相关资源
        最近更新 更多