如何在TomEE中定义MySQL数据源?

时间:2012-12-07 22:07:49

标签: apache-tomee

平台:TomEE Web配置文件1.5.0。

我正在尝试做一个非常基本的事情,为MySQL设置数据源。我已阅读官方指南(http://openejb.apache.org/configuring-datasources.html)。它要求我们在openejb.xml中输入Resource元素。我无法在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>

我将MySQL驱动程序JAR复制到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的名称,我都会得到相同的异常。

我做错了什么?我从Eclipse开始使用TomEE,如果这有任何区别的话。

4 个答案:

答案 0 :(得分:3)

我找到了根本原因。只有当我从Eclipse启动TomEE时才会出现问题。如果我从命令行启动它,我的数据源定义工作得很好。

当我从命令行运行TomEE时,它会使用来自/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf的配置文件。要改变这种情况,我不得不在Eclipse中采取这些步骤:

  1. 从服务器中删除所有已部署的项目。
  2. 打开服务器设置,从“服务器位置”中选择“使用Tomcat安装”。如果至少有一个项目仍部署到服务器,则此部分显示为灰色。所以,确保你已经完成了第1步。
  3. 重新启动服务器并重新部署该应用程序。现在,我的应用程序正在查找数据源。

答案 1 :(得分:2)

答案 2 :(得分:1)

[我会对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/

作为此解决方案的一个优点,eclipse中的TomEE始终使用当前版本的Workspace / Servers / tomee.xml而无需任何进一步的手动操作。

答案 3 :(得分:0)

对我来说,更好的解决方案是将tomee.xml文件放在wpt服务器目录(/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf)中并在那里定义数据源。