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

Платформа: TomEE Web profile 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, если это что-то меняет.

4 ответа

Решение

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

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

  1. Удалите все развернутые проекты с сервера.
  2. Откройте настройки сервера и в разделе "Расположение серверов" выберите "Использовать установку Tomcat". Этот раздел неактивен, если у вас есть хотя бы один проект, все еще развернутый на сервере. Итак, убедитесь, что вы сделали шаг #1.
  3. Перезагрузите сервер и повторно разверните приложение. Теперь мое приложение находит источник данных.

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

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

Платформа: Tomee 1.6.0 Webprofile, 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 без каких-либо дальнейших ручных операций.

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

Другие вопросы по тегам