【问题标题】:Configuring database connection in Jboss FUSE在 Jboss FUSE 中配置数据库连接
【发布时间】:2017-04-18 07:02:59
【问题描述】:

我知道在 JBOSS FUSE 中配置 DB 的一种方法是使用 blueprint.xml。 blueprint.xml 中的以下配置有效

<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 jbossfuse jboss-eap-7


    【解决方案1】:

    Jboss Fuse 提供与各种数据源的集成。您需要像使用过的那样配置它们。但是容器级别没有这样的配置。

    【讨论】:

      【解决方案2】:

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

      先决条件

      安装这些功能

      features:install jdbc
      features:install jndi
      

      数据源包

      deploy 文件夹中放置一个 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 Fuse 控制台中有很多命令可以与数据库交互,例如 jdbc:datasources 将列出所有可用的数据源。使用jdbc:query,您可以针对您的数据库运行任何 SQL(有利于调试问题和测试连接)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 2021-11-15
        • 2010-10-23
        • 1970-01-01
        • 2022-12-05
        • 2014-02-03
        • 2017-11-10
        相关资源
        最近更新 更多