Ответ 1
Библиотека tomcat-dbcp-7.0.30.jar
из репозиториев повреждена.
Замените его:
sudo 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
Я пытаюсь настроить JDBC DataSource в Tomcat 7 под Ubuntu 12.X, поэтому я добавил следующее в файл context.xml:
<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
maxActive="5" maxIdle="2" maxWait="5000"
driverClassName="org.postgresql.Driver" username="usr" password="***" url="jdbc:postgresql://localhost:5432/db" />
Очевидно, используя правильный и проверенный идентификатор и пароль пользователя базы данных. Когда я перезапускаю Tomcat, я получаю эту ошибку:
Feb 05, 2013 1:10:01 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]
Я googled и узнал, что драйвер JDBC должен быть скопирован в папку $CATALINA_HOME/lib, поэтому я скопировал postgresql-9.2-1000.jdbc4.jar в /usr/share/tomcat 7/lib, но он не сделал Помогите. Я попытался скопировать файл в другие места с теми же результатами.
Еще одна попытка состояла в том, чтобы изменить символическую ссылку tomcat-dbcp.jar в /usr/share/tomcat 7/lib из../../java/tomcat-dbcp-7.0.30.jar../../java/tomcat-dbcp.jar. Единственное изменение - я получил только одно предупреждение вместо четырех, но источник данных тоже не работает.
Версия Java:
[email protected]:~$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.4) (7u9-2.3.4-0ubuntu1.12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
Любой намек, очень приветствуемый.
Приветствия.
Библиотека tomcat-dbcp-7.0.30.jar
из репозиториев повреждена.
Замените его:
sudo 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
Причиной является проблема в процессе сборки/пакета Ubuntu для Tomcat7. Если я правильно понимаю проблему, Apache строит tomcat-dbcp.jar из двоичных файлов, а Ubuntu строит пакеты только из исходного кода. Проект Ubuntu в конечном итоге нуждается в изменении имени пакета Java, которое, как правило, нарушает работу для нас, бедных пользователей. Сведения о gory можно найти в списке выпусков Ubuntu.
Решение, которое я нашел, - это имя источника данных factory, когда я определяю ресурс. В одном случае у меня есть файл META-INF/context.xml, который содержит:
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myDatabase"
username="username" password="password"
validationQuery="SELECT COUNT(*) FROM MY_TABLE"
factory="org.apache.commons.dbcp.BasicDataSourceFactory" />
Критический элемент - это объявление "factory", которое переопределяет встроенное значение по умолчанию.
На наших производственных машинах ресурс определяется в элементе GlobalNamingResources файла server.xml. Указание factory требуется только в системах Ubuntu.
У меня была такая же проблема с CentOS. Я получил это, загрузив новую копию tomcat с сайта и загрузив tomcat-dbcp.jar в свою онлайн-серверную библиотеку, перезапустите сервер:)
У меня была такая же проблема на Fedora 20 с Tomcat 7.0.55. Я заменил 7.0.30 на 7.0.55 в пути к файлу и имени файла, и это сработало для меня. Не уверен, почему, но этот файл полностью отсутствовал в установке YUM для tomcat 7. Не могу использовать базу данных без нее.
Это сделало.
Убедитесь, что файл tomcat-dbcp-7.0.30.jar не имеет такого размера, но может быть поврежден, и вам может потребоваться заменить его командой sudo wget выше.
-rw-r - r-- 1 корень root 235411 1 мая 2013 г. tomcat-dbcp-7.0.30.jar
lrwxrwxrwx 1 корень root 22 января 10 2013 tomcat-dbcp.jar → tomcat-dbcp-7.0.30.jar