Mysql 如何在TomEE托管数据源连接上创建语句?

Mysql 如何在TomEE托管数据源连接上创建语句?,mysql,datasource,apache-tomee,Mysql,Datasource,Apache Tomee,我在Eclipse中工作。我添加了一个TomEE服务器,它可以正常启动,但在创建MySQL数据源时似乎出现了问题 我在第1.7.2节中定义了以下数据源: <Resource id="jdbc/WCMDS" type="javax.sql.DataSource"> jdbcDriver com.mysql.jdbc.Driver jdbcUrl jdbc:mysql://localhost:3306/wcm?useUnicode=yes&amp;characte

我在Eclipse中工作。我添加了一个TomEE服务器,它可以正常启动,但在创建MySQL数据源时似乎出现了问题

我在第1.7.2节中定义了以下数据源:

<Resource id="jdbc/WCMDS" type="javax.sql.DataSource">
    jdbcDriver com.mysql.jdbc.Driver
    jdbcUrl jdbc:mysql://localhost:3306/wcm?useUnicode=yes&amp;characterEncoding=utf8&amp;autoReconnect=true
    jtaManaged false 
    password pass
    userName user
    InitialSize 50 
    MaxActive 100
    MaxIdle 3   
</Resource>
在执行查询的bean方法中,我使用检索到的数据源获取连接

Connection connection = DATASOURCE.getConnection();
然后我构建了一个准备好的语句

connection.prepareStatement("select * from myTableName");
在准备语句时,我遇到了
javax.el.ELException:org.hsqldb.HsqlException:user缺少特权或找不到对象:myTableName

=============================================================

请注意,这在数据库方面不是问题。当我用手动创建的数据源替换jndi查找时,一切正常

MysqlDataSource datasource = new MysqlDataSource();
datasource.setURL("jdbc:mysql://localhost:3306/wcm?useUnicode=yes&amp;characterEncoding=utf8&amp;autoReconnect=true");
datasource.setUser("user");
datasource.setPassword("pass");
DATASOURCE=datasource;
=============================================================


所以我得到的错误一定与TomEE管理的数据源有关。为什么来自此类数据源的连接会阻止我创建语句

资源尚未创建,您得到的是默认的hsqldb数据源

您是否在conf/tomee.xml中定义了它


提示:您可以使用openejb中的JMX控制台检查已配置的数据源。该资源尚未创建,您获得了默认的hsqldb数据源

您是否在conf/tomee.xml中定义了它


提示:您可以使用openejb中的JMX控制台检查配置的数据源,因此这似乎是Eclipse下的TomEE的一个问题。另一个用户遇到了这个问题,并介绍了他的发现。我已经按照他的指示做了,现在我得到了一个MySQL数据源


所以这似乎是Eclipse下的TomEE的一个问题。另一个用户遇到了这个问题,并介绍了他的发现。我已经按照他的指示做了,现在我得到了一个MySQL数据源


您是否将最新的mysql-connector-5.1.x.jar复制到您的
tomee/lib
文件夹中?如果不是,这可能是原因,因为在容器从基于xml的配置初始化数据源的早期启动阶段,容器没有mysql驱动程序。出于这个原因,默认情况下会出现一个存根/虚拟hsqldb(它与您的mysql数据库没有任何共同之处)。是的,我在
C:/TomEE_1_7_2/lib
中有mysql-connector-java-5.1.18-bin.jar。您是否将最新的mysql-connector-5.1.x.jar复制到了
TomEE/lib
文件夹中?如果不是,这可能是原因,因为在容器从基于xml的配置初始化数据源的早期启动阶段,容器没有mysql驱动程序。出于这个原因,默认情况下会出现一个存根/虚拟hsqldb(它与您的mysql数据库没有任何共同之处)。是的,我在
C:/TomEE_1_7_2/lib
中有mysql-connector-java-5.1.18-bin.jar。我已经将它添加到TomEE.xml中,正如我问题中的代码片段所示。我还尝试了
type=“com.mysql.jdbc.jdbc2.optional.MysqlDataSource”
。注意,我没有收到NameNotFound异常。我在GeronimoTransactionManager中找到了一个托管数据源。我发现一篇帖子说在Eclipse下的服务器上设置TomEE数据源有问题。所以我应该补充我的问题,我在Eclipse中工作。我已将tomee.xml复制到
/servers/
目录下,但这没有任何区别。类型应为“DataSource”(这是一种资源类型,不是限定名称),MysqlDataSource应为JdbcDriver属性值或类名属性值,具体取决于您所做的配置。我已将其添加到tomee.xml中,根据我问题中的片段。我还尝试了
type=“com.mysql.jdbc.jdbc2.optional.MysqlDataSource”
。注意,我没有收到NameNotFound异常。我在GeronimoTransactionManager中找到了一个托管数据源。我发现一篇帖子说在Eclipse下的服务器上设置TomEE数据源有问题。所以我应该补充我的问题,我在Eclipse中工作。我已将tomee.xml复制到
/servers/
目录下,但这没有任何区别。类型应为“DataSource”(这是一种资源类型,而不是限定名称),MysqlDataSource应为JdbcDriver属性值或类名属性值,具体取决于您所做的配置。
MysqlDataSource datasource = new MysqlDataSource();
datasource.setURL("jdbc:mysql://localhost:3306/wcm?useUnicode=yes&amp;characterEncoding=utf8&amp;autoReconnect=true");
datasource.setUser("user");
datasource.setPassword("pass");
DATASOURCE=datasource;