【问题标题】:JBoss 7 & EJB3 | Where should I define datasourceJBoss 7 和 EJB3 |我应该在哪里定义数据源
【发布时间】:2016-11-21 00:37:15
【问题描述】:

我是 Jboss 的新手,我不明白应该在哪里定义数据库连接数据,如 url、用户名、密码 等。

这是我的多模块项目:

app-root
    app-api
      - src
      - pom.xml

    app-ear
      - src
      - pom.xml

    app-ejb
      - src
      - pom.xml

    pom.xml

我的 persinstence.xml 位于 app-root/app-ejb/src/main/config/default/META-INF/persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

    <persistence-unit name="ejb3_jpa_myapp_pu" transaction-type="JTA">
        <description>Jboss Test application</description>
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:jdbc/MyApp</jta-data-source>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="none" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>

</persistence>

最后是我的简单服务:

@Stateless
@Remote(IService.class)
public class ServiceImpl implements IService{

    @PersistenceContext(unitName = "ejb3_jpa_myapp_pu")
    private EntityManager em;

    @Override
    public void doSomeJob() {
        // [...]
    }
}

我知道我必须定义数据库连接属性,但我可以在哪里做呢?

【问题讨论】:

    标签: java jboss datasource


    【解决方案1】:

    您需要在 JBoss 实例使用的独立 XML 文件中定义数据源。 JBoss 不附带数据库驱动程序,因此有两个步骤:

    1) 为数据库驱动程序(例如 MySQL、Oracle、Postgres 等)创建一个 JBoss 模块

    2) 创建数据源定义

    步骤 1) 只需执行一次,即多个 MySQL 数据源可以使用相同的 MySQL JBoss 模块。

    第 2 步)MySQL 的示例数据源配置如下:

    <datasources>
       <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS">
          <connection-url>jdbc:mysql://localhost:3306/EJB3</connection-url>
             <driver>com.mysql</driver>
          <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
          <pool>
            <min-pool-size>10</min-pool-size>
            <max-pool-size>100</max-pool-size>
            <prefill>true</prefill>
          </pool>
          <security>
            <user-name>test</user-name>
            <password>test</password>
          </security>
          <statement>
            <prepared-statement-cache-size>32</prepared-statement-cache-size>
            <share-prepared-statements/>
          </statement>
        </datasource>
        <drivers>
          <driver name="com.mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
          </driver>
        </drivers>
    </datasources>
    

    以上可以使用 JBoss CLI 自动完成。还可以自动创建 JBoss 模块,例如使用 smartics-jboss-modules-maven-plugin 参见Generate an xml file with all dependencies with maven 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2012-04-23
      相关资源
      最近更新 更多