2016-08-16 59 views
0

我使用Tomcat 8.0,MyBatis的3.2.2,当我的MyBatis-config.xml中使用的数据源无法查找JNDI名称的Tomcat 8.0 MyBatis的

<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。请大家帮忙鉴定,我错过了

的server.xml下Tomcat8.0 \的conf

<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> 

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

<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> 

的MyBatis-config.xml中使用JNDI名称引用

<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创建类''的JDBC驱动程序'null' 。 。 。 产生的原因:在com.mysql.fabric.jdbc.FabricMySQLDriver.parseFabricURL(FabricMySQLDriver.java:97)显示java.lang.NullPointerException

请让我知道,我已经错过了和最新的问题。

回答

0

我看到的主要问题是您正在为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(JDBC驱动程序用于Oracle DB)Tomcat8.0\lib下,取下mysql-connector-java-5.1.38.jar(用于MySQL数据库JDBC驱动程序)。

+0

非常感谢。你没有实施你的解决方案,我可以理解这个问题。我的截止日期太近了,所以我们选择了Web逻辑服务器(因为我们有更改服务器的灵活性),并且我解决了这个问题。 – Sree