2019.03.25
CentOS6.10、Java1.7でWebサイトを構築していて、以下のエラーが表示されMySQL5.1に接続できませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 | javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory] at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:82) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:848) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at org.apache.naming.NamingContext.lookup(NamingContext.java:836) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at org.apache.naming.NamingContext.lookup(NamingContext.java:836) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at org.apache.naming.NamingContext.lookup(NamingContext.java:836) at org.apache.naming.NamingContext.lookup(NamingContext.java:173) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156) at javax.naming.InitialContext.lookup(InitialContext.java:415) |
/etc/tomcat/context.xmlには以下のように設定しています。
1 2 3 4 5 6 7 | <Resource name="jdbc/test_db1" auth="Container" type="javax.sql.DataSource" validationQuery="select 1" username="test_usr1" password="test00001" driverClassName="com.mysql.jdbc.Driver" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" url="jdbc:mysql://localhost:3306/test_db1?useUnicode=true&characterEncoding=utf8" /> |
ネットで検索しまくり原因を探すと、どうやら、tomcat-dbcp-7.0.30.jarが無いようです。
とりあえず、https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-dbcp にWebブラウザで接続してみて該当のjarを入手しましょう。
ここでは、7.0.30.jarを入手していますが、7.0系の最終版である7.0.93か、もしくは動作するようなら最新のjar(現時点:9.0.17)を利用した方がいいかしれません。
以下のように tomcat-dbcp-7.0.30.jarを入手し、/usr/share/javaにファイルを移動します。
1 2 3 | cd /tmp wget http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar mv /tmp/tomcat-dbcp-7.0.30.jar /usr/share/java |
その後さらに、/opt/tomcat/default/lib/にシンボリックリンクを張りました。
1 | ln -s /usr/share/java/tomcat-dbcp-7.0.30.jar /opt/tomcat/default/lib/tomcat-dbcp-7.0.30.jar |
tomcatを再起動してWebAppをブラウザで実行すると問題なく接続できるようになりました。