我在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&characterEncoding=utf8&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&characterEncoding=utf8&autoReconnect=true");
datasource.setUser("user");
datasource.setPassword("pass");
DATASOURCE=datasource;
=============================================== ==============
所以我得到的错误必须与TomEE管理的数据源有关。为什么来自此类数据源的连接会阻止我创建语句?
答案 0 :(得分:0)
尚未创建资源,而是获得了默认的hsqldb数据源。
您是否在conf / tomee.xml中定义了它?
提示:您可以在openejb
中使用JMX控制台检查已配置的数据源答案 1 :(得分:0)
所以这似乎是Eclipse下TomEE的一个问题。另一位用户遇到了这个问题并提出了他的发现。我已按照他的指示操作,现在我正在获取MySQL数据源。