Как определить источник данных MySQL в TomEE?

Платформа: веб-профиль TomEE 1.5.0.

Я пытаюсь сделать очень простую вещь, настроить источник данных для MySQL. Я прочитал официальное руководство (http://openejb.apache.org/configuring-datasources.html). Он просит нас ввести элемент Resource в openejb.xml. Я не могу найти этот файл нигде в tomee-webprofile-1.5.0. Я читал в других местах, что мог бы использовать tomee.xml для той же цели. Итак, я добавил это в свой conf/tomee.xml.

<Resource id="TestDS" type="DataSource">
    JdbcDriver  com.mysql.jdbc.Driver 
    JdbcUrl jdbc:mysql://localhost/test 
    UserName    root 
    Password    some_pass 
</Resource>

Я скопировал JAR драйвера MySQL в папку tomee/lib.

Я написал этот код. Здесь показаны фрагменты:

@Resource(name="TestDS") 
DataSource ds; 

Connection con = ds.getConnection(); 
PreparedStatement ps = con.prepareStatement("select * from UserProfile"); 

Вызов prepareStatement() вызывает это исключение:

java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERPROFILE 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 

Почему система использует драйвер hsqldb? Фактически, независимо от того, что используется в качестве имени для @Resource, я получаю одно и то же исключение.

Что я делаю не так? Я запускаю TomEE из Eclipse, если это имеет значение.


person RajV    schedule 07.12.2012    source источник


Ответы (4)


Я отследил первопричину. Проблема возникает только тогда, когда я запускаю TomEE из Eclipse. Если я запускаю его из командной строки, мое определение источника данных работает нормально.

Похоже, что когда я запускаю TomEE из командной строки, он использует файлы конфигурации из /.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf. Чтобы изменить это, мне пришлось предпринять следующие шаги в Eclipse:

  1. Удалите все развернутые проекты с сервера.
  2. Откройте настройки сервера и в разделе «Расположение серверов» выберите «Использовать установку Tomcat». Этот раздел отображается серым цветом, если на сервере все еще развернут хотя бы один проект. Итак, убедитесь, что вы сделали шаг № 1.
  3. Перезапустите сервер и повторно разверните приложение. Теперь мое приложение находит источник данных.
person RajV    schedule 07.12.2012
comment
У меня точно такая же проблема... TomEE использует неправильный файл tomee.xml... Однако я использую NetBeans. Я понятия не имею, как это исправить. - person Robin Jonsson; 06.05.2013

обычно установка объясняется здесь http://tomee.apache.org/tomee-and-eclipse.html

person Romain Manni-Bucau    schedule 09.12.2012
comment
Параметр «Использовать установку Tomcat», возможно, следует использовать по умолчанию, чтобы избежать ненужных проблем. - person RajV; 09.12.2012

[Я бы сделал это комментарием к ответу RajV, но у меня недостаточно репутации для этого.]

Платформа: веб-профиль Tomee 1.6.0, eclipse-jee-kepler-SR2-linux-gtk-x86_64 и OpenJDK 1.7.0_51.

После выполнения шагов в http://tomee.apache.org/tomee-and-eclipse.html (включая «Установка метаданных рабочей области»), я получил ту же ошибку «у пользователя отсутствуют привилегии или объект не найден». Моя реакция была на:

$ ln -s [workspace_path]/Servers/tomee.xml \ [workspace_path]/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/

Преимуществом этого решения является то, что TomEE в eclipse всегда использует текущую версию Workspace/Servers/tomee.xml без каких-либо дополнительных ручных операций.

person hare    schedule 10.04.2014

Для меня лучшим решением будет поместить файл tomee.xml в каталог вашего сервера wpt (/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf) и указать там ваш источник данных.

person Patryk Dobrowolski    schedule 04.08.2014