【问题标题】:Unable to lookup jndi name tomcat 8.0 mybatis无法查找jndi名称tomcat 8.0 mybatis
【发布时间】:2016-08-16 05:21:31
【问题描述】:

我使用的是tomcat 8.0,mybatis 3.2.2,当我在mybatis-config.xml中使用数据源时,我的应用程序运行良好

<environments default="development">
<environment id="development">
  <transactionManager type="JDBC"/>
     <dataSource type="POOLED">
    <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
    <property name="username" value="uid"/>
    <property name="password" value="pwd"/>
  </dataSource>
</environment>

我遵循了许多论坛中给出的程序和解决方案,尤其是 stachoverflow,但它没有帮助。这是我遵循的步骤。我已将 mysql-connector-java-5.1.38.jar 放在 Tomcat8.0\lib 下,并将 ojdbc6.jar 放在 WEB-INF\lib 文件夹下。我正在使用java 1.8。请帮助确定我错过的地方

Tomcat8.0\conf下的server.xml

<GlobalNamingResources>
    <Resource name="jdbc/MYDB"
        auth=Container
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        username="uid"
        password="pwd"
        url="jdbc:oracle:thin:@localhost:1521:XE"
        />

Tomcat8.0\conf\context.xml

<Context>
   <ResourceLink name="jdbc/MYDB" global="jdbc/MYDB" type="javax.sql.DataSource"/>
</Context>

myapp/WebContent/WEB-INF/中的web.xml

<resource-ref>
   <description>DB Connection</description>
   <res-ref-name>jdbc/MYDB</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

带有 JNDI 名称引用的 mybatis-config.xml

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

DBUtil.java 代码如下

 String resource = "path of mybatis-config.xml";        
    InputStream inputStream;
    try {
        inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    } catch (IOException e) {
        e.printStackTrace();
    }

但是当我运行应用程序(访问数据库)时,我得到了 原因:java.sql.SQLException:无法为连接 URL 'null' 创建类 '' 的 JDBC 驱动程序 . . . 引起:java.lang.NullPointerException 在 com.mysql.fabric.jdbc.FabricMySQLDriver.parseFabricURL(FabricMySQLDriver.java:97)

请让我知道我错过了什么地方以及问题所在。

【问题讨论】:

    标签: servlets jndi mybatis tomcat8


    【解决方案1】:

    我看到的主要问题是您正在为 Oracle 数据库使用 MySQL JDBC 驱动程序。这是一个 Oracle 驱动程序:oracle.jdbc.driver.OracleDriver 这是一个 Oracle 连接字符串:jdbc:oracle:thin:@localhost:1521:XE 但您提到了这一点:

    我已经将mysql-connector-java-5.1.38.jar放在Tomcat8.0\lib下,ojdbc6.jar放在WEB-INF\lib文件夹下。

    您需要将ojdbc6.jar(Oracle DB 的 JDBC 驱动程序)放在 Tomcat8.0\lib 下并删除 mysql-connector-java-5.1.38.jar(MySQL DB 的 JDBC 驱动程序)。

    【讨论】:

    • 非常感谢。虽然我没有实施您的解决方案,但我可以理解这个问题。我的截止日期太近了,所以我们选择了 Web 逻辑服务器(因为我们可以灵活地更改服务器)并且我解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多