1

OpenEJB 3.1.4 + Tomcat 6 でアプリケーションをデプロイしようとしています。このアプリケーションは JBoss 内で正常にデプロイされますが、OpenEJB で動作させたいと考えています。

基本的に、データソースを構成し、それを EAR for OpenEJB でデプロイする方法を知りたいです。

たった今:

EJB は OpenEJB の JNDI ブラウザで見つけることができますが、hibernate はデータソースを見つけられないようです (データベース スキーマを更新できません) - stdout から:

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のデータソースへのポイント:

<?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:

<?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

<?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>

しかし、それらのどれも私のアプリコンテナによってロード/考慮されていないようです。何か案は?

4

2 に答える 2

3

それを見つけた。実際、私は EJB デプロイメントとこれが実際のアプリケーション コンテナーであることに混乱しました。OpenEJB はアプリケーション コンテナーですが、それ自体が Tomcat の webapp としてデプロイされます

まず、PersistenceUnit を次のように構成しますpersistence.xml

<?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

<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>
于 2011-03-04T14:40:42.447 に答える
0

これは、Tomcat にデプロイされたアプリケーションに JBoss 固有のデプロイメント ファイル (mysql-ds.xml) を使用しているためです。tomcat の場合は、別のファイルが必要です。これを参照してください:

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

ただし、OpenEJB の部分については経験がないため、よくわかりません。

于 2011-03-04T11:01:45.390 に答える