2016-08-16 53 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