明辉站/网站教程/内容

Jboss下MS SQL Server设置指导

网站教程2024-02-07 阅读
[摘要]本文提供一个详细而易懂的指导,让你快速掌握使用Microsoft SQL Server关系数据库管理系统(RDBMS)和JBoss J2EE 应用 服务器套件来开发,发布和运行企业Java应用程序的基本知识。 JBoss是一个业界领先的开放源码的符合标准的J2EE应用服务器套件的名\r称。...
本文提供一个详细而易懂的指导,让你快速掌握使用Microsoft SQL Server
关系数据库管理系统(RDBMS)和JBoss J2EE 应用
服务器套件来开发,发布和运行企业Java应用程序的基本知识。

JBoss是一个业界领先的开放源码的符合标准的J2EE应用服务器套件的名\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应用程序都是
100%纯java应用程序。

Microsoft SQL Server是一个健壮的高性能的和高安全的关系数据库平
台。 它是一个运行在Windows 95,98,Me,Nt和2000平台上的Windows应用
程序。它也有Windows CE平台下的版本,但我想你不会将该版本和JBoss一起使用吧?


将高性能的开放源码100%Java J2EE应用服务器的JBoss套件和高超新能
的Microsoft SQL Server RDBMS组合起来,可以给你提供一个Windows平台
下的J2EE开发和发布环境,相比其它Windows平台下的J2EE应用套间和
RDBMS方案,该组合性能优异,高回报(ROI),极大减少产品上市时间(RTTM)。


首先,你需要从JBoss网站获取一份JBoss软件。所有JBoss的产品信息以及
如何获取JBoss软件的指导可以在JBoss FAQ或在JBoss 站点找到。本文的余下
部分包含下列内容:


1. 安装MS SQL Server的JDBC驱动程序
2. 配置JBoss使用JDBC驱动程序
3. 为CMP指定MS SQL Server数据类型
4. 问题解答

需要注意的是JBoss应用服务器套件和MS SQL Server都在蓬勃发展。它们
的版本都在发行,修订,增添新的特性。这意味着 本文的某些信息对于你的
JBoss或MS SQL Server过时了。如果你使用最新的JBoss CVS版本或开发版或\r
MS SQL Server beta版时 更容易出现这种情况。


安装JDBC驱动程序

在你能够与JBoss(或所有其它Java应用程序)一起使用Microsoft SQL
Server之前,你必须取得并安装JDBC驱动程序。现将一些现有的Microsoft
SQL Server JDBC驱动程序列在下面。

---------------------------------------------------------------------------------------------------------------
驱动程序 提供者 JDBC 类型 Availability 版本

---------------------------------------------------------------------------------------------------------------
FreeTDS http://www.freetds.org/ Type 4 免费/开放源码
---------------------------------------------------------------------------------------------------------------
Merant
DataDirect http://www.merant.com/ Type 4 商业
Connect JDBC
---------------------------------------------------------------------------------------------------------------
i-net Opta
JDBC http://www.inetsoftware.de/ Type 4 商业 4.10修订版
---------------------------------------------------------------------------------------------------------------
WebLogic
JDriver for Weblogic Type 4 商业
MS SQL Server
---------------------------------------------------------------------------------------------------------------
Atinav
aveConnect http://www.atinav.com/ Type 4 商业
JDBC
---------------------------------------------------------------------------------------------------------------
Sun JDBC-
ODBC Bridge http://java.sun.com Type 4 免费
---------------------------------------------------------------------------------------------------------------

* Sun JDBC-ODBC桥驱动程序和FreeTDS JDBC驱动程序(至少目前2001年4月的版本)不推荐\r
使用于正式的J2EE开发和发布

安装Sun JDBC-ODBC桥驱动程序

Sun JDBC-ODBC桥驱动程序在Java 2 SDK安装过程中自动安装。安装包\r
为sun.jdbc.odbc。对于所有使用JDBC-ODBC桥的应用程序该包都必须在
CLASSPATH中。在本教程中假设Sun JDBC-ODBC桥已经正确的安装在你的系
统中。

为了使用Sun JDBC-ODBC桥你需要创建一个ODBC数据源来引用MS SQL
Server数据库。本教程中假设已经创建了名为 jboss_odbc
指向某个MS SQLServer数据库的数据源。


安装FreeTDS驱动程序
从http://www.freetds.org下载FreeTDS, 你应该得到了名为freetds_jdbc.snapshot.jar的
文件,然后复制到%JBOSS_HOME%/lib/ext
目录下。

安装Merant DataDirect Connect JDBC驱动程序
有两种方法, 你可以选择下列方法之一:
1. 运行Merant安装程序,然后将base.jar, util.jar和sqlserver.jar文件添加到
CLASSPATH中。这些文件位于%MERANT_HOME/lib
目录下。
2. 将base.jar, uitl.jar和sqlserver.jar文件从%MERANT_HOME%/lib目录复制到
%JBOSS_HOME%/lib/ext目录,推荐采用这种方法。

安装i-net OPTA 2000JDBCdriver
你可以采用下列方法之一:
1. 运行JBoss时将Opta2000.jar文件加入ClASSPATH。
2. 将文件Opta2000.jar复制到%/JBOSS_HOME%/lib/ext目录。这是推荐的方法。

配置JBoss使用JDBC驱动程序
关于配置JBoss使用你的JDBC驱动程序的指导取决于你使用的JBoss版本,请选择适合你\r
的版本的方法。

配置JBoss 2.4

遵照配置JBoss2.1和2.2的指导,
但是将org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl
替换为org.jboss.pool.jdbc.xa.wrapper.XADataSourceImpl。

配置JBoss2.1和2.2
告诉JBoss新的JDBC驱动程序
在安装好MS SQL Server JDBC驱动程序后,你需要告诉JBoss你要使用该驱动
程序。将该驱动程序添加
到JBoss启动时加载的JDBC清单中。该清单存放在jboss.jcml文件中。该文件可

%JBOSS_HOME%/conf/<config-name>中找到。对于标准的JBoss发行版\r
本,<config-name>是default而
JBoss-Jetty版本则是jetty。该入口应该是一行用逗号分隔开的JDBC驱动程序名列表。

打开文件,找到以下面的mbean标记开始的入口:
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
驱动程序列表放在名为Drivers的<attribute>子标记中。按如下所示将你的
JDBC驱动程序添加到列表
中。

$ 添加Sun JDBC-ODBC桥驱动程序
<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驱动程序
<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驱动程序
<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驱动程序
<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>

创建DB连接池
到目前为止,你已经告诉JBoss你的驱动程序。现在建立一个你的EJBBean能够
连接的连接池。在本教程中,你将创建
一个名为SQLServerPool的连接池。要创建连接池,先在jboss.jcml文件中定位
已下列行开始的mbean入口:
<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=DefaultDS">
在你刚在定位的mbean项下面加入如下所给的mbean项。注意这些必须加在结束标记</mbean>后面!!!
$ Sun JDBC-ODBC桥驱动程序连接池声明
<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驱动程序连接池声明
<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驱动程序连接池声明(采用INET数据源)
<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驱动程序连接池声明(采用JBoss数据源)
<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驱动程序找到并且创建了连接池,如果成功加载JDBC驱动程序将有如下所示的输出
[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数据类型映射
配置JBoss使用MS SQL Server连接池作为缺省的数据源,你可以选择下列方法之一:
$ 在你的应用程序的META-INF目录下创建jaws.xml文件重载standardjaws.xml中如下所示的缺省设置
示例 jaws.xml(MS SQL Server CMP数据类型映射)
<?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"映射复制到此处 -->

</type-mapping>
</type-mappings>
</jaws>
$ 改变%JBOSS_HOME%/conf目录下的standardjaws.xml文件中的缺省设置
要改变缺省的数据源和数据类型映射,请对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
这种错误可能在下列情况出现:
1. jboss.jcml配置文件中的JDBC驱动名称拼写错误。在如上的例子中应该是
sun.jdbc.odbc.JdbcOdbcDriver
2. JDBC驱动程序没有正确的安装 - 它的类文件或.jar文件不在CLASSPATH中。

在启动连接池时JBoss悬停
当JBoss启动时,一系列的信息显示在控制台上。关于连接池的最后信息应该如下所示:
[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驱动程序是否正确加载。如果没有正确加载请察看前面的"JDBC未装载错误\\\"部分。如果驱动
正确加载,该错误意味着JBoss不能和你的数据库服务器通讯。该错误可能在以下情形出现:
1. 用于连接数据库的参数拼写错误或遗漏。请检查是否正确的指定了该连接池的主机名,数据库,用户
名,用户口令等。

……

相关阅读