首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该如何在OpenEJB中声明我的数据源?

问我应该如何在OpenEJB中声明我的数据源?
EN

Stack Overflow用户
提问于 2011-03-04 10:47:27
回答 2查看 4.2K关注 0票数 1

我试图在OpenEJB 3.1.4 + Tomcat 6中部署一个应用程序,这个应用程序在JBoss中部署OK,但我想让它在OpenEJB中工作。

基本上,我想知道如何配置我的数据源并使用EAR为OpenEJB部署它。

现在:

EJB可以在OpenEJB的JNDI浏览器中找到,但是hibernate似乎找不到数据源(它无法更新数据库模式)--从stdout:

代码语言:javascript
复制
org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: Running hbm2ddl schema export
org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: exporting generated schema to database
org.hibernate.tool.hbm2ddl.SchemaExport create GRAVE: Unsuccessful: create table Answer ([...])

我的persistence.xml指向我的数据源:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
[...]

  <persistence-unit name="myapp">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>

<jta-data-source>java:/myapp_mysql</jta-data-source>

我尝试过包括一个像src/main/application/mysql-ds.xml这样的数据源文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

  <datasources>
    <local-tx-datasource>
      <jndi-name>myapp_mysql</jndi-name>
      <connection-url>jdbc:mysql://hostname:3306/my_app</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>user</user-name>
      <password>password</password>

甚至还有一个像src/main/application/openejb.xml这样的

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<openejb>
  <Connector id="myapp_mysql">
    JdbcDriver = com.mysql.jdbc.Driver
    JdbcUrl = jdbc:mysql://hostname:3306/my_app
    UserName = user
    Password = password
  </Connector>
</openejb>

但我的应用程序容器似乎没有加载/考虑到它们。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-04 14:40:42

找到了。实际上,我对EJB部署感到困惑,而哪个才是真正的应用程序容器:OpenEJB是应用程序容器,但它本身是作为webapp部署在Tomcat中的。

首先,在PersistenceUnit中配置persistence.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
  <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
  [...]

  <persistence-unit name="myapp">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>

  <jta-data-source>myapp_mysql</jta-data-source>

然后,在OpenEJB配置文件tomcat\conf\openejb.xml中声明数据源。

代码语言:javascript
复制
<Resource id="myapp_mysql" type="DataSource">
  JdbcDriver  com.mysql.jdbc.Driver
  JdbcUrl   jdbc:mysql://localhost:3306/my_app
  UserName   user
  Password  password
  JtaManaged true
</Resource>
票数 3
EN

Stack Overflow用户

发布于 2011-03-04 11:01:45

这是因为在Tomcat中部署的应用程序使用的是特定于JBoss的部署文件(MySQLds.xml)。对于tomcat,您需要一个不同的文件。见此:

http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html#JDBC_Data_Sources

不过,我对OpenEJB部分并不确定,因为我对它没有经验。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5192718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档