如何在TomEE管理的DataSource连接上创建语句?

时间:2016-03-15 03:57:28

标签: mysql datasource tomee

我在Eclipse中工作。我添加了一台启动良好的TomEE服务器,但是创建MySQL数据源似乎存在问题。

我在TomEE 1.7.2中定义了以下DataSource:

<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中,我检索DataSource

@PostConstruct
public void postConstruct() {
    InitialContext context = new InitialContext();
    String dataSourceName="java:/comp/env/"+getDatasourceJndiName();
    DataSource dataSource = (DataSource) context.lookup(dataSourceName);
    DATASOURCE = dataSource;

在执行查询的bean方法中,我使用检索到的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&amp;characterEncoding=utf8&amp;autoReconnect=true");
datasource.setUser("user");
datasource.setPassword("pass");
DATASOURCE=datasource;

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

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

2 个答案:

答案 0 :(得分:0)

尚未创建资源,而是获得了默认的hsqldb数据源。

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

提示:您可以在openejb

中使用JMX控制台检查已配置的数据源

答案 1 :(得分:0)

所以这似乎是Eclipse下TomEE的一个问题。另一位用户遇到了这个问题并提出了他的发现。我已按照他的指示操作,现在我正在获取MySQL数据源。

How to define MySQL data source in TomEE?