【Tomcat7】DataSourceが見つからずにjava.lang.ClassNotFoundExceptionが発生する
Tomcatインストール後、DB接続情報を書いて接続確認した時にハマったのでメモ。
環境
今回は以下のような環境で実施してました
- OS: Redhat Enterprise Linux 7
- Java: 1.7.0_151
- Tomcat: 7.0.76
- MySQL: 5.7.20
手順
%CATALINA_HOME%/webapps/Hoge
にアプリケーション設置後、
%CATALINA_HOME%/conf/Catalina/localhost/Hoge.xml
作成し、以下のように接続情報を記載
<Context path="/Hoge" reloadable="true" docBase="/usr/share/tomcat/webapps/Hoge"> <Resource name="MySQL_JDBC" auth="Container" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" type="javax.sql.DataSource" username="xxxx" password="xxxxxxxx" url="jdbc:mysql://127.0.0.1:xxxx/HogeDB" maxWait="3000" /> </Context>
%CATALINA_HOME%/webapps/Hoge/WEB-INF/web.xml
に以下追記
<resource-ref> <res-ref-name>MySQL_JDBC</res-ref-name> <res-type>javax.sql.DataSource</res-type> </resource-ref>
ブラウザでページを確認すると、次のようなエラーがががが。
Dec 06, 2017 5:16:58 PM org.apache.catalina.core.NamingContextListener addResource WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
解決方法
StackOverFlowの記事によると、tomcat-dbcp-7.0.30.jar
が破損しているとのこと。
%CATALINA_HOME%/lib/
を確認してみると、そもそもtomcat-dbcp-7.0.30.jar
が無かった...。
記事にある通りにjarファイルをダウンロードしてみる
$ wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp /7.0.30/tomcat-dbcp-7.0.30.jar
再度ブラウザで確認してみると、エラー無く確認できた。
Tomcat初めて触るからわからないことだらけで大変だ...(白目
参考サイト
- 作者: 藤野圭一
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/12/26
- メディア: 大型本
- この商品を含むブログ (1件) を見る