明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Jboss下MS SQL Server設(shè)置指導(dǎo)

[摘要]本文提供一個詳細(xì)而易懂的指導(dǎo),讓你快速掌握使用Microsoft SQL Server關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)和JBoss J2EE 應(yīng)用 服務(wù)器套件來開發(fā),發(fā)布和運(yùn)行企業(yè)Java應(yīng)用程序的基本知識。 JBoss是一個業(yè)界領(lǐng)先的開放源碼的符合標(biāo)準(zhǔn)的J2EE應(yīng)用服務(wù)器套件的名\r稱。...
本文提供一個詳細(xì)而易懂的指導(dǎo),讓你快速掌握使用Microsoft SQL Server
關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)和JBoss J2EE 應(yīng)用
服務(wù)器套件來開發(fā),發(fā)布和運(yùn)行企業(yè)Java應(yīng)用程序的基本知識。

JBoss是一個業(yè)界領(lǐng)先的開放源碼的符合標(biāo)準(zhǔn)的J2EE應(yīng)用服務(wù)器套件的名\r
稱。該套件包括JBossServer EJB v1.1 Container 和server, JBossMQ JMS
1.0 implemetation, JBossNS JNDI implemetation,JBossCMP advanced O/R mapper和
JDBC data object storage implemetation以及
JAAS-based JBossSX security frameeork。 所有的JBoss應(yīng)用程序都是
100%純java應(yīng)用程序。

Microsoft SQL Server是一個健壯的高性能的和高安全的關(guān)系數(shù)據(jù)庫平
臺。 它是一個運(yùn)行在Windows 95,98,Me,Nt和2000平臺上的Windows應(yīng)用
程序。它也有Windows CE平臺下的版本,但我想你不會將該版本和JBoss一起使用吧?


將高性能的開放源碼100%Java J2EE應(yīng)用服務(wù)器的JBoss套件和高超新能
的Microsoft SQL Server RDBMS組合起來,可以給你提供一個Windows平臺
下的J2EE開發(fā)和發(fā)布環(huán)境,相比其它Windows平臺下的J2EE應(yīng)用套間和
RDBMS方案,該組合性能優(yōu)異,高回報(ROI),極大減少產(chǎn)品上市時間(RTTM)。


首先,你需要從JBoss網(wǎng)站獲取一份JBoss軟件。所有JBoss的產(chǎn)品信息以及
如何獲取JBoss軟件的指導(dǎo)可以在JBoss FAQ或在JBoss 站點(diǎn)找到。本文的余下
部分包含下列內(nèi)容:


1. 安裝MS SQL Server的JDBC驅(qū)動程序
2. 配置JBoss使用JDBC驅(qū)動程序
3. 為CMP指定MS SQL Server數(shù)據(jù)類型
4. 問題解答

需要注意的是JBoss應(yīng)用服務(wù)器套件和MS SQL Server都在蓬勃發(fā)展。它們
的版本都在發(fā)行,修訂,增添新的特性。這意味著 本文的某些信息對于你的
JBoss或MS SQL Server過時了。如果你使用最新的JBoss CVS版本或開發(fā)版或\r
MS SQL Server beta版時 更容易出現(xiàn)這種情況。


安裝JDBC驅(qū)動程序

在你能夠與JBoss(或所有其它Java應(yīng)用程序)一起使用Microsoft SQL
Server之前,你必須取得并安裝JDBC驅(qū)動程序,F(xiàn)將一些現(xiàn)有的Microsoft
SQL Server JDBC驅(qū)動程序列在下面。

---------------------------------------------------------------------------------------------------------------
驅(qū)動程序 提供者 JDBC 類型 Availability 版本

---------------------------------------------------------------------------------------------------------------
FreeTDS http://www.freetds.org/ Type 4 免費(fèi)/開放源碼
---------------------------------------------------------------------------------------------------------------
Merant
DataDirect http://www.merant.com/ Type 4 商業(yè)
Connect JDBC
---------------------------------------------------------------------------------------------------------------
i-net Opta
JDBC http://www.inetsoftware.de/ Type 4 商業(yè) 4.10修訂版
---------------------------------------------------------------------------------------------------------------
WebLogic
JDriver for Weblogic Type 4 商業(yè)
MS SQL Server
---------------------------------------------------------------------------------------------------------------
Atinav
aveConnect http://www.atinav.com/ Type 4 商業(yè)
JDBC
---------------------------------------------------------------------------------------------------------------
Sun JDBC-
ODBC Bridge http://java.sun.com Type 4 免費(fèi)
---------------------------------------------------------------------------------------------------------------

* Sun JDBC-ODBC橋驅(qū)動程序和FreeTDS JDBC驅(qū)動程序(至少目前2001年4月的版本)不推薦\r
使用于正式的J2EE開發(fā)和發(fā)布

安裝Sun JDBC-ODBC橋驅(qū)動程序

Sun JDBC-ODBC橋驅(qū)動程序在Java 2 SDK安裝過程中自動安裝。安裝包\r
為sun.jdbc.odbc。對于所有使用JDBC-ODBC橋的應(yīng)用程序該包都必須在
CLASSPATH中。在本教程中假設(shè)Sun JDBC-ODBC橋已經(jīng)正確的安裝在你的系
統(tǒng)中。

為了使用Sun JDBC-ODBC橋你需要創(chuàng)建一個ODBC數(shù)據(jù)源來引用MS SQL
Server數(shù)據(jù)庫。本教程中假設(shè)已經(jīng)創(chuàng)建了名為 jboss_odbc
指向某個MS SQLServer數(shù)據(jù)庫的數(shù)據(jù)源。


安裝FreeTDS驅(qū)動程序
從http://www.freetds.org下載FreeTDS, 你應(yīng)該得到了名為freetds_jdbc.snapshot.jar的
文件,然后復(fù)制到%JBOSS_HOME%/lib/ext
目錄下。

安裝Merant DataDirect Connect JDBC驅(qū)動程序
有兩種方法, 你可以選擇下列方法之一:
1. 運(yùn)行Merant安裝程序,然后將base.jar, util.jar和sqlserver.jar文件添加到
CLASSPATH中。這些文件位于%MERANT_HOME/lib
目錄下。
2. 將base.jar, uitl.jar和sqlserver.jar文件從%MERANT_HOME%/lib目錄復(fù)制到
%JBOSS_HOME%/lib/ext目錄,推薦采用這種方法。

安裝i-net OPTA 2000JDBCdriver
你可以采用下列方法之一:
1. 運(yùn)行JBoss時將Opta2000.jar文件加入ClASSPATH。
2. 將文件Opta2000.jar復(fù)制到%/JBOSS_HOME%/lib/ext目錄。這是推薦的方法。

配置JBoss使用JDBC驅(qū)動程序
關(guān)于配置JBoss使用你的JDBC驅(qū)動程序的指導(dǎo)取決于你使用的JBoss版本,請選擇適合你\r
的版本的方法。

配置JBoss 2.4

遵照配置JBoss2.1和2.2的指導(dǎo),
但是將org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl
替換為org.jboss.pool.jdbc.xa.wrapper.XADataSourceImpl。

配置JBoss2.1和2.2
告訴JBoss新的JDBC驅(qū)動程序
在安裝好MS SQL Server JDBC驅(qū)動程序后,你需要告訴JBoss你要使用該驅(qū)動
程序。將該驅(qū)動程序添加
到JBoss啟動時加載的JDBC清單中。該清單存放在jboss.jcml文件中。該文件可

%JBOSS_HOME%/conf/<config-name>中找到。對于標(biāo)準(zhǔn)的JBoss發(fā)行版\r
本,<config-name>是default而
JBoss-Jetty版本則是jetty。該入口應(yīng)該是一行用逗號分隔開的JDBC驅(qū)動程序名列表。

打開文件,找到以下面的mbean標(biāo)記開始的入口:
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
驅(qū)動程序列表放在名為Drivers的<attribute>子標(biāo)記中。按如下所示將你的
JDBC驅(qū)動程序添加到列表
中。

$ 添加Sun JDBC-ODBC橋驅(qū)動程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,sun.jdbc.od
bc.JdbcOdbcDriver
</attribute>
</mbean>
$ 添加FreeTDS驅(qū)動程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.interne
tcds.jdbc.tds.Driver
</attribute>
</mbean>
$ 添加Merant DataDirect Connect JDBC驅(qū)動程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.merant
.datadirect.jdbc.sqlserver.SQLServerDriver
</attribute>
</mbean>
$ 添加i-net OPTA 2000 JDBC驅(qū)動程序
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">

<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,com.inet.td
s.TdsDriver
</attribute>
</mbean>
$ 添加WebLogic jDriver for Microsoft SQL Server
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
<attribute name="Drivers">
org.hsql.jdbcDriver,org.enhydra.instantdb.jdbc.idbDriver,weblogic.jd
bc.mssqlserver4.Driver
</attribute>
</mbean>

創(chuàng)建DB連接池
到目前為止,你已經(jīng)告訴JBoss你的驅(qū)動程序,F(xiàn)在建立一個你的EJBBean能夠
連接的連接池。在本教程中,你將創(chuàng)建
一個名為SQLServerPool的連接池。要創(chuàng)建連接池,先在jboss.jcml文件中定位
已下列行開始的mbean入口:
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=DefaultDS">
在你剛在定位的mbean項下面加入如下所給的mbean項。注意這些必須加在結(jié)束標(biāo)記</mbean>后面!。
$ Sun JDBC-ODBC橋驅(qū)動程序連接池聲明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool
">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.X
ADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:odbc:jboss_odbc</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ Merant DataDirect Connect JDBC驅(qū)動程序連接池聲明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool
">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.X
ADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:sqlserver://servername:1433</attribute>
<attribute name="Properties">DatabaseName=DatabaseName</attribute>

<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ i-net OPTA 2000 JDBC驅(qū)動程序連接池聲明(采用INET數(shù)據(jù)源)
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool
">
<attribute name="DataSourceClass">com.inet.tds.XDataSource</attribute>

<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="Properties">host=ServerName; database=DatabaseName</attribute>
<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ i-net OPTA 2000 JDBC驅(qū)動程序連接池聲明(采用JBoss數(shù)據(jù)源)
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool
">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.X
ADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:inetdae7:HostName</attribute>

<attribute name="JDBCUser">dbusername</attribute>
<attribute name="Password">dbpassword</attribute>
etc...
</mbean>
$ WebLogic jDriver for Microsoft SQL Server連接池聲明
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=SQLServerPool">
<attribute name="DataSourceClass">org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl</attribute>
<attribute name="PoolName">SQLServerPool</attribute>
<attribute name="URL">jdbc:weblogic:mssqlserver4:DatabaseName@ServerName:1433</attribute>
<attribute name="Properties">user=dbusername; password=dbpassword</attribute>
etc...
</mbean>

檢驗DB連接池
啟動JBoss確保JDBC驅(qū)動程序找到并且創(chuàng)建了連接池,如果成功加載JDBC驅(qū)動程序?qū)⒂腥缦滤镜妮敵?
[Transaction manager] Initializing
[Transaction manager] Loaded JDBC-driver:org.hsql.jdbcDriver
[Transaction manager] Loaded JDBC-driver:org.enhydra.instantdb.jdbc.idbDriver
[Transaction manager] Loaded JDBC-driver:sun.jdbc.odbc.JdbcOdbcDriver
[Transaction manager] Loaded JDBC-driver:com.merant.datadirect.jdbc.sqlserver.SQLServerDriver
[Transaction manager] Loaded JDBC-driver:com.inet.tds.TdsDriver
[Transaction manager] Loaded JDBC-driver:weblogic.jdbc.mssqlserver4.Driver
[Transaction manager] Initialized
稍等片刻...連接池的輸出
[SQLServerPool] Starting
[SQLServerPool] XA Connection pool SQLServerPool bound to java:/SQLServerPool
[SQLServerPool] Started

配置CMP數(shù)據(jù)類型映射
配置JBoss使用MS SQL Server連接池作為缺省的數(shù)據(jù)源,你可以選擇下列方法之一:
$ 在你的應(yīng)用程序的META-INF目錄下創(chuàng)建jaws.xml文件重載standardjaws.xml中如下所示的缺省設(shè)置
示例 jaws.xml(MS SQL Server CMP數(shù)據(jù)類型映射)
<?xml version="1.0" encoding="UTF-8"?>
<jaws>
<datasource>java:/SQLServerPool</datasource>
<type-mapping>MS SQLSERVER</type-mapping>
<default-entity>
<remove-table>false</remove-table>
</default-entity>
<type-mappings>
<type-mapping>
<name>MS SQLSERVER</name>

<!-- 請將standardjaws中的"MS SQLSERVER"映射復(fù)制到此處 -->

</type-mapping>
</type-mappings>
</jaws>
$ 改變%JBOSS_HOME%/conf目錄下的standardjaws.xml文件中的缺省設(shè)置
要改變?nèi)笔〉臄?shù)據(jù)源和數(shù)據(jù)類型映射,請對standardjaws.xml文件作如下修改
<?xml version="1.0" encoding="UTF-8"?>
<jaws>

<datasource>java:/SQLServerPool</datasource>
<type-mapping>MS SQLSERVER</type-mapping>
*注: 除了MS SQLSERVER 2000,其它版本都使用MS SQLSERVER。如果你使用的是SQL Server2000, 將
上面的MS SQLSERVER改為MS SQLSERVER2000。

疑難解答
JDBC未裝載錯誤
在啟動時顯示如下錯誤:
[JDBC] Could not load driver:sun.jdbc.odbc.JdbcOdbcDrivers
這種錯誤可能在下列情況出現(xiàn):
1. jboss.jcml配置文件中的JDBC驅(qū)動名稱拼寫錯誤。在如上的例子中應(yīng)該是
sun.jdbc.odbc.JdbcOdbcDriver
2. JDBC驅(qū)動程序沒有正確的安裝 - 它的類文件或.jar文件不在CLASSPATH中。

在啟動連接池時JBoss懸停
當(dāng)JBoss啟動時,一系列的信息顯示在控制臺上。關(guān)于連接池的最后信息應(yīng)該如下所示:
[Hypersonic] Press [Ctrl]+[C] to abort
[InstantDB] Started
[DefaultDS] Starting
[DefaultDS] XA Connection pool DefaultDS bound to java:/DefaultDS
[DefaultDS] Started
[SQLServerPool] Starting
[SQLServerPool] XA Connection pool SQLServerPool bound to java:/SQLServerPool
首先檢查JDBC驅(qū)動程序是否正確加載。如果沒有正確加載請察看前面的"JDBC未裝載錯誤\\\"部分。如果驅(qū)動
正確加載,該錯誤意味著JBoss不能和你的數(shù)據(jù)庫服務(wù)器通訊。該錯誤可能在以下情形出現(xiàn):
1. 用于連接數(shù)據(jù)庫的參數(shù)拼寫錯誤或遺漏。請檢查是否正確的指定了該連接池的主機(jī)名,數(shù)據(jù)庫,用戶
名,用戶口令等。