jboss3.2.1的ms sqlserver的数据源配置 ms sqlserver jdbc 我也安装好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.china-pub.com/computers/emook/1180/info.htm Jboss下MS SQL Server配置指导介绍 本文提供一个详细而易懂的指导,让你快速掌握使用Microsoft SQL Server关系数据库管理系统(RDBMS)和JBoss J2EE 应用服务器套件来开发,发布和运行企业Java应用程序的基本知识。 JBoss是一个业界领先的开放源码的符合标准的J2EE应用服务器套件的名称。该套件包括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版本或开发版或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 OptaJDBC http://www.inetsoftware.de/ Type 4 商业 4.10修订版---------------------------------------------------------------------------------------------------------------WebLogicJDriver 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月的版本)不推荐使用于正式的J2EE开发和发布安装Sun JDBC-ODBC桥驱动程序 Sun JDBC-ODBC桥驱动程序在Java 2 SDK安装过程中自动安装。安装包为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版本,请选择适合你的版本的方法。配置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发行版本,<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.odbc.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.internetcds.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.tds.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.jdbc.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.XADataSourceImpl</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.XADataSourceImpl</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.XADataSourceImpl</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.JdbcOdbcDriver2. 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. 用于连接数据库的参数拼写错误或遗漏。请检查是否正确的指定了该连接池的主机名,数据库,用户名,用户口令等。 我的是3.0,配好后启动如果没出错,你用lookup("java:/mysqlserver")应该就可以得到了 我刚配上的如下:-----------------------------------------------------------------------mssql-ds.xml<datasources> <local-tx-datasource> <jndi-name>jdbc/test</jndi-name> <connection-url>jdbc:microsoft:sqlserver://10.1.1.192:1433;DatabaseName=TEST</connection-url> <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class> <user-name>sa</user-name> <password>sa</password> </local-tx-datasource></datasources>-----------------------------------------------------------------------standardjbosscmp-jdbc.xml <datasource>java:/jdbc/test</datasource> <datasource-mapping>MS SQLSERVER2000</datasource-mapping>-----------------------------------------------------------------------standardjaws.xml <datasource>java:/jdbc/test</datasource> <type-mapping>MS SQLSERVER2000</type-mapping> <debug>false</debug>测试:<%@page language="java" contentType="text/html;"%><%@page import="java.sql.*,javax.naming.Context,javax.naming.InitialContext"%><%@page import="javax.sql.DataSource"%><% Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Context initCtx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup("java:/jdbc/test"); conn = ds.getConnection(); if (conn != null) out.println("ok"); else out.println("error"); } catch(Exception ex) { out.println(ex.getMessage()); } finally { if (conn != null) conn.close(); } %> 你调用的时候使用名称就是:java:/mssqlserver(其中mssqlserver为你在xxx-ds.xml文件中定义的jndi-nametry {Context initCtx = new InitialContext(); DataSource ds = (DataSource)initCtx.lookup("java:/jdbc/test"); 上边的例子错了,应该是Context initCtx = new InitialContext();DataSource ds = (DataSource)initCtx.lookup("java:/mssqlserver"); 阿宝:我的mssql-ds.xml配置果了,调用也没有问题但是通过jboss提供的mssql-xa-ds.xml怎么做修改也连接不上!!我知道jboss的jndi是通过java:/+xml文件中的jndi-name组成的 i blieve, 答案就在这里等待 Jboss3.0.7平台的Oracle8.1.7数据源设置获取相关资源1. Jboss3.0.7的下载2. 下载oracle8.1.7的jdbc驱动程序class121.zip安装jboss将下载的jboss的zip包解压到c盘根目录上。同时在windows中设置环境变量jboss_homeC:\jboss-3.0.7_jakarta-tomcat-4.1.24,设置环境变量java_home为 C:\JBuilder8\jdk1.4配置数据源1将class121.zip拷贝到C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\lib中,同时在windows中设置环境变量C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\lib\classes121.zip2 将C:\jboss-3.0.7_jakarta-tomcat-4.1.24\docs\examples\jca中oracle-service.xml和oracle-xa-service.xml拷贝到C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\deploy下面编辑其中两个文件。将里面的数据库参数设置为你的数据库参数,如:jdbc:oracle:thin:@youroraclehost:1521:yoursid改成jdbc:oracle:thin:@cqu:1521:yjs<config-property name="UserName" type="java.lang.String"></config-property><config-property name="Password" type="java.lang.String"></config-property>改成<config-property name="UserName" type="java.lang.String">system</config-property><config-property name="Password" type="java.lang.String">manager</config-property>3 进入C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\conf目录。编辑standardjbosscmp-jdbc.xml,将<datasource>java:/DefaultDS</datasource><datasource-mapping> Hypersonic SQL </datasource-mapping> 改成<datasource>java:/OracleDS</datasource><datasource-mapping>Oracle8</datasource-mapping>编辑standardjaws.xml的方法同上。注意事项如果不进行第3步的修改,在ejb部署的时候,可以插入删除数据,但是在oracle数据库中,你有可能不会看到你的数据,是因为你的数据被插入到默认的Hypersonic数据库中了,在C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\db\hypersonic\ default.script中可以看到你插的数据脚本。因此,必须修改那两个文件。mssql的类似 为什么要在JUnit SetUp方法中创建对象,在SetUp之前可以吗? 传递参数问题 Struts2中如何用ognl表达式读取properties中的值 如何根据jprofiler来判断内存泄露 为什么我在用Formatter对象的format时会出现错误提示? javabean问题,急急急急急!!! Required extension "ant" not found,是什么原因,高手请进 一个异常的问题. 学习JAVA,什么工具好些? 为啥我在<%%>写的代码会显示出来了,求解??? struts-upload.来人指点啊 我的数据库已连上,为什么对表操作会出错,附代码
介绍
本文提供一个详细而易懂的指导,让你快速掌握使用Microsoft SQL Server关系数据库管理系统(RDBMS)和JBoss J2EE 应用
服务器套件来开发,发布和运行企业Java应用程序的基本知识。 JBoss是一个业界领先的开放源码的符合标准的J2EE应用服务器套件的名称。该套件包括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版本或开发版或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月的版本)不推荐使用于正式的J2EE开发和发布安装Sun JDBC-ODBC桥驱动程序 Sun JDBC-ODBC桥驱动程序在Java 2 SDK安装过程中自动安装。安装包为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版本,请选择适合你的版本的方法。配置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发行版本,<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.odbc.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.internetcds.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.tds.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.jdbc.mssqlserver4.Driver
</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.XADataSourceImpl</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.XADataSourceImpl</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.XADataSourceImpl</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. 用于连接数据库的参数拼写错误或遗漏。请检查是否正确的指定了该连接池的主机名,数据库,用户
名,用户口令等。
配好后启动如果没出错,
你用lookup("java:/mysqlserver")应该就可以得到了
-----------------------------------------------------------------------mssql-ds.xml
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/test</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://10.1.1.192:1433;DatabaseName=TEST</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password>sa</password>
</local-tx-datasource></datasources>
-----------------------------------------------------------------------standardjbosscmp-jdbc.xml
<datasource>java:/jdbc/test</datasource>
<datasource-mapping>MS SQLSERVER2000</datasource-mapping>
-----------------------------------------------------------------------
standardjaws.xml
<datasource>java:/jdbc/test</datasource>
<type-mapping>MS SQLSERVER2000</type-mapping>
<debug>false</debug>
测试:<%@page language="java" contentType="text/html;"%>
<%@page import="java.sql.*,javax.naming.Context,javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:/jdbc/test");
conn = ds.getConnection();
if (conn != null)
out.println("ok");
else
out.println("error");
} catch(Exception ex) {
out.println(ex.getMessage());
} finally {
if (conn != null) conn.close();
}
%>
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:/jdbc/test");
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:/mssqlserver");
我的mssql-ds.xml配置果了,调用也没有问题
但是通过jboss提供的mssql-xa-ds.xml怎么做修改也连接不上!!我知道jboss的jndi是通过java:/+xml文件中的jndi-name组成的
获取相关资源
1. Jboss3.0.7的下载
2. 下载oracle8.1.7的jdbc驱动程序class121.zip
安装jboss
将下载的jboss的zip包解压到c盘根目录上。同时在windows中设置环境变量jboss_home
C:\jboss-3.0.7_jakarta-tomcat-4.1.24,设置环境变量java_home为 C:\JBuilder8\jdk1.4
配置数据源
1将class121.zip拷贝到C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\lib中,同时在windows中设置环境变量C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\lib\classes121.zip
2 将C:\jboss-3.0.7_jakarta-tomcat-4.1.24\docs\examples\jca中oracle-service.xml和oracle-xa-service.xml拷贝到C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\deploy下面
编辑其中两个文件。将里面的数据库参数设置为你的数据库参数,如:
jdbc:oracle:thin:@youroraclehost:1521:yoursid
改成jdbc:oracle:thin:@cqu:1521:yjs
<config-property name="UserName" type="java.lang.String"></config-property>
<config-property name="Password" type="java.lang.String"></config-property>
改成
<config-property name="UserName" type="java.lang.String">system</config-property>
<config-property name="Password" type="java.lang.String">manager</config-property>
3 进入C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\conf目录。编辑standardjbosscmp-jdbc.xml,将<datasource>java:/DefaultDS</datasource>
<datasource-mapping> Hypersonic SQL </datasource-mapping> 改成<datasource>java:/OracleDS</datasource>
<datasource-mapping>Oracle8</datasource-mapping>
编辑standardjaws.xml的方法同上。
注意事项
如果不进行第3步的修改,在ejb部署的时候,可以插入删除数据,但是在oracle数据库中,你有可能不会看到你的数据,是因为你的数据被插入到默认的Hypersonic数据库中了,在C:\jboss-3.0.7_jakarta-tomcat-4.1.24\server\default\db\hypersonic\ default.script中可以看到你插的数据脚本。因此,必须修改那两个文件。
mssql的类似