在JBOSS保险丝中配置数据库连接



我知道在JBOSS保险丝中配置DB的一种方式是使用BluePrint.xml。blueprint.xml Works

中的配置下面
<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保险丝中配置它?

jboss保险丝提供与各种数据源的集成。您需要像使用过的那样将它们配置为捆绑包。但是在容器级别上没有这种配置。

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

先决条件

安装这些功能

features:install jdbc
features:install jndi

数据源捆绑包

内部删除XML文件> deploy 带有以下内容的文件夹:

<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名称的服务

使用DataSource服务

当捆绑包需要数据源时,请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:datasources将列出所有可用数据库。使用jdbc:query,您可以针对DB运行任何SQL(用于调试问题并测试连接(

最新更新