JBoss 7& EJB3 |我应该在哪里定义数据源

时间:2016-07-18 11:57:26

标签: java jboss datasource

我是Jboss的新手,我不明白我应该在哪里定义数据库连接数据,如 url,username,password 等。

这是我的多模块项目:

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() {
        // [...]
    }
}

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

1 个答案:

答案 0 :(得分:0)

您需要在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以获取更多信息。