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

标签 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,如果这有什么不同的话。

最佳答案

我已经找到了根本原因。只有当我从 Eclipse 启动 TomEE 时才会出现问题。如果我从命令行启动它,我的数据源定义就可以正常工作。

当我从命令行运行 TomEE 时,它似乎使用了/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf 中的配置文件。要改变这一点,我必须在 Eclipse 中执行以下步骤:

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

关于apache-tomee - 如何在 TomEE 中定义 MySQL 数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771783/

相关文章:

java - org.apache.openejb.server.cxf.rs.PojoInvoker 抛出 invokingTargetException

java - 如何在java类中使用tomee.xml中声明的数据源

java - CdiJtaProcessEngineConfiguration 在加载事务管理器之前请求事务管理器

使用 TestNG、JSFUnit 2 和 Arquillian 进行自动化测试的 Maven

mysql - 如何在 TomEE 中的 java 应用程序中连接 MySQL 数据库

mysql - 为什么我在本地 TomEE 1.6 中收到 HsqlException?

java - 使@Schedule 在集群环境中只运行一次

eclipse - 如何在 Eclipse 中使用 Tomcat 8.5.x 和 TomEE 7.x?

JSF 2.3 具有泛型的自定义转换器

java - TomEE 部署失败 未找到数据源