【问题标题】:jboss 7 AS datasource for sqlserver用于 sqlserver 的 jboss 7 AS 数据源
【发布时间】:2012-01-14 01:55:01
【问题描述】:

我以独立模式运行 jboss,并将standalone.xml 中的数据源设置为以下内容:

<datasource jndi-name="MyDenaliDS" pool-name="MyDenaliDs_Pool" enabled="true" jta="true" 
                                                   use-java-context="true" use-ccm="true">
    <connection-url>
        jdbc:sqlserver://myip:1433;databaseName=mydb;integratedSecurity=true
    </connection-url>
    <driver>
        sqljdbc
    </driver>
    <security>
        <user-name>
            username
        </user-name>
        <password>
            password
        </password>
    </security>
</datasource>
<drivers>
    <driver name="sqljdbc" module="com.microsoft.sqlserver.jdbc">
        <driver-class>
            com.microsoft.sqlserver.jdbc.SQLServerDataSource
        </driver-class>
    </driver>                    
</drivers>

在文件夹%jbosshome%\modules\com\microsoft\sqlserver\jdbc\ 我有sqljdb4.jar 和以下module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module name="com.microsoft.sqlserver.jdbc" xmlns="urn:jboss:module:1.0">
    <resources>
        <resource-root path="sqljdbc4.jar"/> 
     </resources>
     <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/> 
     </dependencies>
</module>

当我启动 jboss 时,它给了我以下错误:

> New missing/unsatisfied dependencies:    service
> jboss.jdbc-driver.sqljdbc (missing)

有人知道我做错了什么或者我遗漏了什么吗?

【问题讨论】:

    标签: jboss datasource jboss7.x sqljdbc


    【解决方案1】:

    使用 Jboss AS 7.1.1,以及将模块放在 %jbosshome%\modules\com\microsoft\sqlserver\jdbc\main 中,我不得不对 xml 稍作更改——standalone.xml 中的驱动程序元素应该是:

     <driver name="sqljdbc" module="com.microsoft.sqlserver.jdbc">
          <driver-class>
               com.microsoft.sqlserver.jdbc.SQLServerDriver
          </driver-class>
     </driver>
    

    module.xml 应该是:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <module xmlns="urn:jboss:module:1.1" name="com.microsoft.sqlserver.jdbc">
    
        <resources>
            <resource-root path="sqljdbc4.jar"/>
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
            <module name="javax.servlet.api" optional="true"/>
        </dependencies>
    
    </module>
    

    【讨论】:

    • 我仍然收到 14:55:59,408 INFO [org.jboss.as.controller](控制器引导线程)​​服务状态报告新的缺失/未满足的依赖项:服务 jboss.jdbc-driver.sqljdbc (缺失)
    • 为此干杯——它有帮助!我唯一改变的是standalone.xml中的标签是:
    【解决方案2】:

    使用 Jboss 7.1.1,我设法让它在不指定模块的情况下工作。

    只需将 sqljdbc4.jar 放入部署目录即可: %JBOSSHOME%\独立\部署

    standalone.xml中datasource需要的配置如下:

    <datasource jndi-name="java:jboss/datasources/myPool" pool-name="myPool" enabled="true" use-java-context="true">
        <connection-url>jdbc:sqlserver://127.0.0.1:1433;databaseName=myName;</connection-url>
        <driver>sqljdbc4.jar</driver>
        <pool>
            <min-pool-size>10</min-pool-size>
            <max-pool-size>100</max-pool-size>
            <prefill>true</prefill>
        </pool>
        <security>
            <user-name>myUser</user-name>
            <password>myPassword</password>
        </security>
        <statement>
            <prepared-statement-cache-size>32</prepared-statement-cache-size>
            <share-prepared-statements>true</share-prepared-statements>
        </statement>
    </datasource>
    

    【讨论】:

    • 使用 jar 文件名作为驱动程序名称并跳过 部分也对我有用。 SQL Server 驱动程序与 JDBC Type 4 兼容,部署它就足够了。
    【解决方案3】:

    遇到和你一样的错误

    而不是 %jbosshome%\modules\com\microsoft\sqlserver\jdbc\

    试试 %jbosshome%\modules\com\microsoft\sqlserver\jdbc\main

    然后把jdbc驱动的.jar和module.xml放在上面。

    【讨论】:

    • 我这样做了,但在 JBoss 7.0.2.Final 中它仍然不适合我
    【解决方案4】:

    我使用了这个配置,它在 AS7 上运行良好

    <datasource jndi-name="java:jboss/datasources/stagingDS" pool-name="stagingDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:sqlserver://linp-sqlrpt-01;databaseName=pmdm</connection-url>
        <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
        <driver>sqlserver</driver>
        <security>
            <user-name>username</user-name>
            <password>password</password>
        </security>
     </datasource>
    
    <drivers>
        <driver name="sqlserver" module="com.microsoft.jdbc">
            <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
        </driver>
    </drivers>
    

    当然,如果您不使用分布式数据源,您可以按照之前定义的方式配置常规驱动程序类。

    模块文件如下所示。

    <module xmlns="urn:jboss:module:1.1" name="com.microsoft.jdbc">
        <properties>
            <property name="jboss.api" value="private"/>
        </properties>
    
        <resources>
            <resource-root path="sqljdbc4.jar"/>
        </resources>
    
        <dependencies>
           <module name="javax.api"/>
           <module name="javax.transaction.api"/>
           <module name="javax.servlet.api" optional="true"/>
        </dependencies>
    </module>
    

    【讨论】:

      【解决方案5】:

      通过管理控制台部署 JDBC jar 文件(例如 sqljdbc41.jar)应该允许在定义新数据源时选择和使用它。

      【讨论】:

        【解决方案6】:

        这是适合我的工作。 在JBOSS 7,MSSQL JDBC驱动6,类型4,文件名:sqljdbc42.jar

        • 在[JBoss HOME]\modules\com\microsoft\main 中安装驱动名称:sqljdbc42.jar
        • 在同目录下添加module.xml,内容如下

          <module xmlns="urn:jboss:module:1.1" name="com.microsoft">
          <resources>
          <resource-root path="sqljdbc42.jar"/>
          </resources>
          <dependencies>
          <module name="javax.api"/>
          <module name="javax.xml.bind.api"/>
          <module name="javax.transaction.api"/>
          </dependencies>
          </module>
          
        • 将数据源定义插入到块&lt;subsystem xmlns="urn:jboss:domain:datasources:4.0"&gt; &lt;datasources&gt;中的standalone.xml,如下所示

          <datasource jta="true" jndi-name="java:jboss/datasources/iwebDS" pool-name="MSSQLDS" enabled="true" use-ccm="true">
          <connection-url>jdbc:sqlserver://172.24.17.52:1803;DatabaseName=IWEB_IWEBSIT</connection-url>
          <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
          <driver>sqlserver2008</driver>
          <pool>
          <min-pool-size>10</min-pool-size>
          <initial-pool-size>10</initial-pool-size>
          <max-pool-size>100</max-pool-size>
          <flush-strategy>FailingConnectionOnly</flush-strategy>
          </pool>
          <security>
          <user-name>[sqlserver user]</user-name>
          <password>[sqlserver password]</password>
          </security>
          <validation>
          <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
          <background-validation>true</background-validation>
          </validation>
          </datasource>
          
        • 将驱动程序定义插入到块&lt;subsystem xmlns="urn:jboss:domain:datasources:4.0"&gt; &lt;drivers&gt;中的standalone.xml,如下所示

          <driver name="sqlserver2008" module="com.microsoft">
          <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
          </driver>
          

        ps:“sqlserver2008”是你想要的名字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-23
          • 1970-01-01
          • 2014-07-16
          • 1970-01-01
          • 1970-01-01
          • 2012-04-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多