在Jboss中配置数据库连接FUSE

问题描述:

我知道在JBOSS FUSE中配置数据库的一种方法是使用blueprint.xml。 低于blueprint.xml配置工作在Jboss中配置数据库连接FUSE

<bean id="gemsDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
    <property name="url" value="${gems_url}" /> 
    <property name="username" value="${gems_username}" /> 
    <property name="password" value="${gems_password}" /> 
    <property name="maxIdle" value="5" /> 
    <property name="minIdle" value="1" /> 
    <property name="initialSize" value="1" /> 
</bean> 

但是,有什么办法来配置它在JBoss容器特定的配置文件。例如 - 在JBOSS EAP中,我们可以在standalone.xml中配置它。在类似的线路上,我们可以在JBOSS FUSE中配置它吗?

Jboss Fuse提供与各种数据源的集成。你需要像你使用的那样将它们捆绑在一起。但是在容器层面上没有这样的配置。

您可以在一个包中定义一个数据源并将其导出。在其他包中,您可以导入并像使用服务一样使用它。

先决条件

安装这些功能

features:install jdbc 
features:install jndi 

数据源束

降内一个XML文件部署文件夹下面的内容:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> 

    <bean id="dataSource" class="org.postgresql.jdbc3.Jdbc3SimpleDataSource"> 
     <property name="url" value="jdbc:postgresql://localhost:5432/databasename"/> 
     <property name="user" value="username"/> 
     <property name="password" value="xxx"/> 
    </bean> 

    <service interface="javax.sql.DataSource" ref="dataSource"> 
     <service-properties> 
      <entry key="osgi.jndi.service.name" value="jdbc/yourdatabasename_ds"/> 
     </service-properties> 
    </service> 
</blueprint> 

这将导出服务与javax.sql.DataSource接口和JNDI名称

使用数据源服务

当一个包需要的数据源,请OSGi的注入它。

<blueprint> 
    <reference id="yourDatabaseDs" 
      interface="javax.sql.DataSource" 
      availability="mandatory" 
      filter="(osgi.jndi.service.name=jdbc/yourdatabasename_ds)"/> 
</blueprint> 

使用您提供的JNDI名称检索正确的数据源。
使用availability="mandatory"您可以强制您的包等待数据源变为可用。如果没有这个参考,这个包就不会启动。

您需要正确使用您所使用的数据库的JDBC驱动程序。

其他东西

你有很多的JBoss保险丝控制台命令的现在与数据库进行交互,像​​,将列出所有可用的数据源。使用jdbc:query,您可以针对您的数据库运行任何SQL(适用于调试问题和测试连接)