无法查找jndi名称tomcat 8.0 mybatis

时间:2016-08-16 05:21:32

标签: servlets jndi mybatis tomcat8

我正在使用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,但它没有帮助。以下是我遵循的步骤。我在Tomcat8.0 \ lib下安装了mysql-connector-java-5.1.38.jar,在WEB-INF \ lib文件夹下放置了ojdbc6.jar。我使用的是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)

请让我知道我错过的地方,以及这个问题。

1 个答案:

答案 0 :(得分:0)

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

  

我已将Tomcat8.0 \ lib下的mysql-connector-java-5.1.38.jar和WEB-INF \ lib文件夹下的ojdbc6.jar放置。

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