Я работаю в Eclipse. Я добавил сервер TomEE, который запускается нормально, но, похоже, проблема связана с созданием MySQL DataSource.Как создать инструкции на подключении DataSource, управляемом TomEE?
Я определил следующие DataSource в TomEE 1.7.2:
<Resource id="jdbc/WCMDS" type="javax.sql.DataSource">
jdbcDriver com.mysql.jdbc.Driver
jdbcUrl jdbc:mysql://localhost:3306/wcm?useUnicode=yes&characterEncoding=utf8&autoReconnect=true
jtaManaged false
password pass
userName user
InitialSize 50
MaxActive 100
MaxIdle 3
</Resource>
В моем бобе я извлечь DataSource
@PostConstruct
public void postConstruct() {
InitialContext context = new InitialContext();
String dataSourceName="java:/comp/env/"+getDatasourceJndiName();
DataSource dataSource = (DataSource) context.lookup(dataSourceName);
DATASOURCE = dataSource;
В методе боба, который выполняет запрос, я использую извлеченную DataSource для получить соединение.
Connection connection = DATASOURCE.getConnection();
Тогда я построить PreparedStatement
connection.prepareStatement("select * from myTableName");
При подготовке заявления, я бегу в javax.el.ELException: org.hsqldb.HsqlException: user lacks privilege or object not found: myTableName
================== ==========================================
Обратите внимание, это не проблема на стороне базы данных. Когда я заменяю jndi-поиск с помощью созданного вручную источника данных, все работает нормально.
MysqlDataSource datasource = new MysqlDataSource();
datasource.setURL("jdbc:mysql://localhost:3306/wcm?useUnicode=yes&characterEncoding=utf8&autoReconnect=true");
datasource.setUser("user");
datasource.setPassword("pass");
DATASOURCE=datasource;
=========================================== ==================
Таким образом, ошибка, которую я получаю, должна иметь какое-то отношение к источнику данных, управляемому TomEE. Почему связь с таким источником данных мешает мне создавать заявления?
вы скопировать последнюю MySQL-разъем-5.1.x.jar в ваш 'tomee/lib' папку? Если это не так, это может быть причиной, так как контейнер не имеет драйвера mysql на ранней стадии запуска, когда контейнер инициализирует источник данных из конфигурации на основе xml. По этой причине по умолчанию создается дочерний hqqldb (который не имеет ничего общего с вашим mysql DB). – MWiesner
Да, у меня есть mysql-connector-java-5.1.18-bin.jar в 'C:/TomEE_1_7_2/lib'. – jacekn