jboss-3.2.0_tomcat-4.1.24 连接池配置方法

导读:
  


  jboss_tomcat的整合版就不介绍怎么去下载了,很好找的。
  我这里下载的是jboss-3.2.0_tomcat-4.1.24
  那么废话少说,直接进入主题:
  首先查看文件:/jboss_tomcat/server/default/deploy/hsqldb-ds.xml 中的配置:
  
  
  
  
  
  
  
  
  
  
   jboss:service=Hypersonic
   DefaultDS
  
   jdbc:hsqldb:hsql://localhost:1701 ------------------》这一行要设置
  
  
  
  
   org.hsqldb.jdbcDriver ------------------》这一行要设置
   sa ------------------》这一行要设置
   ------------------》这一行要设置
  
  
  
   5
  
  
  
name="jboss:service=Hypersonic">  name="jboss:service=Hypersonic">
   1701 ------------------》这一行要设置
   true
   default
   false
   true
  
  
  我用来配置SQLserver 更改设置得到下面的程序段把它覆盖掉hsqldb-ds.xml 或改你自定义的名都可以。
  但要注意,这里的JNDINAME是DefaultDS是唯一的不能和别的JNDI重名,我是把上面的hsqldb-ds.xml文件删除了,
  下面的存成sqlsrv_ds.xml
  
  
  
  
  
  
  
  
  
  
   jboss:service=Hypersonic
   DefaultDS
  
   jdbc:microsoft:sqlserver://192.168.0.221:1433;DatabaseName=mydb;SelectMethod=cursor
  
  
  
  
   com.microsoft.jdbc.sqlserver.SQLServerDriver
   sa
   sa
  
  
  
   5
  
  
  
name="jboss:service=Hypersonic">  name="jboss:service=Hypersonic">
   1433
   true
   default
   false
   true
  
  
  这里改起来比较简单,看来应该是可以了吧?满怀信心启动Joss试一下,晕! 还是报错。
  看看错误原因: 什么:"JMS_MESSAGES 消息无效" 之类的提示,由于是中文提示感觉莫名其妙,也不知道是什么原因,郁闷啊。
  我都差点放弃了,试想换了一下Mysql的驱动程序做连接池,
  才发Mysql的JDBC用英文提示说明的是 JMS_MESSAGES表名不存在,真不知道微软的
  JDBC在搞什么东东,提示的中文Exception根本看不懂,浪费了我好多时间。
  我这才晃然大悟,原来JMS消息驱动BEAN需要存放可持久的BEAN的时候就要把
  MESSAGE存到数据库中去,这个表就是它的载体。
  系统崩溃了,消息也不会丢失也就是这个原理吧。嘿嘿...
  我追根求源,发现关于JMS_MESSAGES表的配置原来是在jbossmq-service.xml文件中,来看看这段配置:
  
name="jboss.mq:service=PersistenceManager">  name="jboss.mq:service=PersistenceManager">
   jboss.mq:service=MessageCache
   jboss.jca:service=LocalTxCM,name=DefaultDS --->>注意这里
  
  BLOB_TYPE=OBJECT_BLOB
  INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?)
  INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?)
  SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS
  SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES
  SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE DESTINATION=?
  SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?
  MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=?
  UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=?
  UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=?
  UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=?
  DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE TXID IS NOT NULL AND TXOP=?
  DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ?
  DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND TXOP=?
  DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?
  CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, / ----->>注意这里
  DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), / ----->>注意这里
  MESSAGEBLOB OBJECT, PRIMARY KEY (MESSAGEID, DESTINATION) ) ----->>注意这里
  CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER ) ----->>注意这里
  
  
  一大堆的代码,不用说了,前面的DefaultDS名称正好与这里的同名,而且也有关于JMS_MESSAGE表的配置。
  这下完蛋了,这个表的结构我怎么知道啊?再晕!!!!
  别急,往下看,后面就有关于建表的操作:
  嘿嘿。。。。。。
  把那两个建表语句拷贝出来:
  CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL,
  DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1),
  MESSAGEBLOB OBJECT, PRIMARY KEY (MESSAGEID, DESTINATION) )
  CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER )
  在SqlServer中执行一下,表改建立了吧?
  啊?!!发现报错。 OBJECT类型不存在? 查查资料才了解到原来OBJECT在这里就是Blob类型,即二进制大文件类型
  各数据库不一样,这里的类型也不同,这里统一用了Object伪类型。
  哦,原来是这样,进一步了解,SqlServer中没有Blob类型,而取而代之的是Image类型。
  好了,再执行下面的SQL:
  CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL,
  DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1),
  MESSAGEBLOB image, PRIMARY KEY (MESSAGEID, DESTINATION) )
  CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER )
  这下子两个表都建好了。
  看看再启动Jboss试一下:哈哈。。。。。。这下子没有报错了,写个测试连接池的程序看看:
  <%@ page contentType="text/html; charset=GBK" import="java.sql.*,javax.naming.*,javax.sql.*"%>
  
   <BR>  jndipool <BR>  
  
  
  <%

java.sql.Connection con=null;

DataSource ds = null;

try{

Context ctx = new InitialContext();

String jndi_name="java:/DefaultDS";

ds = (DataSource)ctx.lookup(jndi_name);

//Context envCtx = (Context) initCtx.lookup("java:comp/env");

// ds = (javax.sql.DataSource)envCtx.lookup("sqljn");

con=ds.getConnection();

Statement statement=con.createStatement();

ResultSet rs=statement.executeQuery("select * from student");

while (rs.next())

{

out.println(rs.getString("name")+"<  java.sql.Connection con=null;

  DataSource ds = null;

  try{

  Context ctx = new InitialContext();

  String jndi_name="java:/DefaultDS";

  ds = (DataSource)ctx.lookup(jndi_name);

  //Context envCtx = (Context) initCtx.lookup("java:comp/env");

  // ds = (javax.sql.DataSource)envCtx.lookup("sqljn");

  con=ds.getConnection();

  Statement statement=con.createStatement();

  ResultSet rs=statement.executeQuery("select * from student");

  while (rs.next())

  {

  out.println(rs.getString("name")+"
");

  }

  con.close();

  }

  catch(Exception e)

  {

  System.err.println("erro conn!!");

  }

  %>
  
  
  运行以后,结果就出来了! OK了,嘿嘿!!!!!!!!
  这个连接池花了我两天的时间,还真是很烦琐呢!不过配出来了真是值得庆幸呀。
  对了,这里还要说明的是:
  jdbc:microsoft:sqlserver://192.168.0.221:1433;DatabaseName=mydb;SelectMethod=cursor
  微软的JDBC的URL需要在后面加上SelectMethod=cursor,否则配置连接池的时候会提示can't clone table...
  表不能复制错。还有,我这里的JDBC是下的setup2.2.0029版本的,最好不要用老的setup2.2.0022版本的,
  原来的版本有个BUG说什么不能re-read row 重复读取行,做CMP的时候就出错,简直是扯蛋,这么严重
  的BUG到最近才解决,看来微软真是不情愿对JAVA去做技术支持,但又不得不做。。。,微软活的可真是
  累呀,打击敌人还要为敌人做技术支持。 BUG多多,质量差,是可以理解的,我原本对MS的JDBC早就不满
  了,很多专家对它的评论都不好。
  要是再发现新版本有什么新的BUG我干脆就把它给废了,换第三方的算了,所以大家也不用太担心,
  MS Jdbc driver用不好可以换别的,不要在一棵树上掉死呀,第三方的Driver网上很多,有兴趣可以
  去查一下
  相信大家在配置Weblogic的CMP的时候也遇到过类似的问题,没关系,一并解决之。
  Weblogic真他妈是好好东西,可是要钱啊,一个项目才多少钱?一个Weblogic又要多少钱??算过吗?
  还好,有Jboss在这里,听说其性能是非常优良的,最爽的就是完全不要钱,还给源码看,老外就是牛。
  只不过,关于Jboss的技术资料太少,网上一大抄大多是关于2.x的,3.x的版本资料太少,而且各个版本
  的差别太大,配置的写法完全不一样,我没用过JBOSS2.x也没有发言权,但就Jboss3.x而言总体感觉还
  是很不错的。尤其是和Jbulider7整合以后更是如虎添翼。
  关于怎么整合这不是本文要讨论的主题,我会再写文章的,具体要查关于Opentool方面的资料。
  Jbuilder+Jboss开发人员根本不用再关心Jboss什么配置,所有应用程序或EJB的部署都是自动到位
  与Weblogic豪不逊色,而且启动速度要比Weblogic快很多哟!嘿嘿。。。开发项目可以考虑用Jboss拉。
  看了这么多也够累了吧。Ok 就写到这里拉。
  文章作者:侃侃 Email: nikerson@163.com
  


  
  

jboss_tomcat的整合版就不介绍怎么去下载了,很好找的。我这里下载的是jboss-3.2.0_tomcat-4.1.24 那么废话少说,直接进入主题:首先查看文件:/jboss_tomcat/server/default/deploy/hsqldb-ds.xml 中的配置: < datasources> < local-tx-datasource> < depends>jboss:service=Hypersonic < jndi-name>DefaultDS < connection-url>jdbc:hsqldb:hsql://localhost:1701 ------------------》这一行要设置 < driver-class>org.hsqldb.jdbcDriver ------------------》这一行要设置 < user-name>sa ------------------》这一行要设置 < password> ------------------》这一行要设置 < min-pool-size>5 < mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic"> < attribute name="Port">1701 ------------------》这一行要设置 < attribute name="Silent">true < attribute name="Database">default < attribute name="Trace">false < attribute name="No_system_exit">true 我用来配置SQLserver 更改设置得到下面的程序段把它覆盖掉hsqldb-ds.xml 或改你自定义的名都可以。但要注意,这里的JNDINAME是DefaultDS是唯一的不能和别的JNDI重名,我是把上面的hsqldb-ds.xml文件删除了,下面的存成sqlsrv_ds.xml < datasources> < local-tx-datasource> < depends>jboss:service=Hypersonic < jndi-name>DefaultDS < connection-url>jdbc:microsoft:sqlserver://192.168.0.221:1433;DatabaseName=mydb;SelectMethod=cursor < driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver < user-name>sa < password>sa < min-pool-size>5 < mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic"> < attribute name="Port">1433 < attribute name="Silent">true < attribute name="Database">default < attribute name="Trace">false < attribute name="No_system_exit">true 这里改起来比较简单,看来应该是可以了吧?满怀信心启动Joss试一下,晕! 还是报错。看看错误原因: 什么:"JMS_MESSAGES 消息无效" 之类的提示,由于是中文提示感觉莫名其妙,也不知道是什么原因,郁闷啊。我都差点放弃了,试想换了一下Mysql的驱动程序做连接池,才发Mysql的JDBC用英文提示说明的是 JMS_MESSAGES表名不存在,真不知道微软的 JDBC在搞什么东东,提示的中文Exception根本看不懂,浪费了我好多时间。我这才晃然大悟,原来JMS消息驱动BEAN需要存放可持久的BEAN的时候就要把 MESSAGE存到数据库中去,这个表就是它的载体。系统崩溃了,消息也不会丢失也就是这个原理吧。嘿嘿...我追根求源,发现关于JMS_MESSAGES表的配置原来是在jbossmq-service.xml文件中,来看看这段配置:< mbean code="org.jboss.mq.pm.jdbc2.PersistenceManager" name="jboss.mq:service=PersistenceManager"> < depends optional-attribute-name="MessageCache">jboss.mq:service=MessageCache < depends optional-attribute-name="ConnectionManager">jboss.jca:service=LocalTxCM,name=DefaultDS --->>注意这里 < attribute name="SqlProperties"> BLOB_TYPE=OBJECT_BLOB INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?) INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?) SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE DESTINATION=? SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=? MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=? DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE TXID IS NOT NULL AND TXOP=? DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ? DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND TXOP=? DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=? CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, / ----->>注意这里 DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), / ----->>注意这里 MESSAGEBLOB OBJECT, PRIMARY KEY (MESSAGEID, DESTINATION) ) ----->>注意这里 CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER ) ----->>注意这里 一大堆的代码,不用说了,前面的DefaultDS名称正好与这里的同名,而且也有关于JMS_MESSAGE表的配置。这下完蛋了,这个表的结构我怎么知道啊?再晕!!!!别急,往下看,后面就有关于建表的操作:嘿嘿。。。。。。把那两个建表语句拷贝出来: CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), MESSAGEBLOB OBJECT, PRIMARY KEY (MESSAGEID, DESTINATION) ) CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER )在SqlServer中执行一下,表改建立了吧? 啊?!!发现报错。 OBJECT类型不存在? 查查资料才了解到原来OBJECT在这里就是Blob类型,即二进制大文件类型各数据库不一样,这里的类型也不同,这里统一用了Object伪类型。哦,原来是这样,进一步了解,SqlServer中没有Blob类型,而取而代之的是Image类型。好了,再执行下面的SQL: CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), MESSAGEBLOB image, PRIMARY KEY (MESSAGEID, DESTINATION) ) CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER )这下子两个表都建好了。看看再启动Jboss试一下:哈哈。。。。。。这下子没有报错了,写个测试连接池的程序看看:<%@ page contentType="text/html; charset=GBK" import="java.sql.*,javax.naming.*,javax.sql.*"%>< head>< title> jndipool< body><% java.sql.Connection con=null; DataSource ds = null; try{ Context ctx = new InitialContext(); String jndi_name="java:/DefaultDS"; ds = (DataSource)ctx.lookup(jndi_name); //Context envCtx = (Context) initCtx.lookup("java:comp/env"); // ds = (javax.sql.DataSource)envCtx.lookup("sqljn"); con=ds.getConnection(); Statement statement=con.createStatement(); ResultSet rs=statement.executeQuery("select * from student"); while (rs.next()) { out.println(rs.getString("name")+" 运行以后,结果就出来了! OK了,嘿嘿!!!!!!!!这个连接池花了我两天的时间,还真是很烦琐呢!不过配出来了真是值得庆幸呀。对了,这里还要说明的是: jdbc:microsoft:sqlserver://192.168.0.221:1433;DatabaseName=mydb;SelectMethod=cursor微软的JDBC的URL需要在后面加上SelectMethod=cursor,否则配置连接池的时候会提示can't clone table...表不能复制错。还有,我这里的JDBC是下的setup2.2.0029版本的,最好不要用老的setup2.2.0022版本的,原来的版本有个BUG说什么不能re-read row 重复读取行,做CMP的时候就出错,简直是扯蛋,这么严重的BUG到最近才解决,看来微软真是不情愿对JAVA去做技术支持,但又不得不做。。。,微软活的可真是累呀,打击敌人还要为敌人做技术支持。 BUG多多,质量差,是可以理解的,我原本对MS的JDBC早就不满了,很多专家对它的评论都不好。要是再发现新版本有什么新的BUG我干脆就把它给废了,换第三方的算了,所以大家也不用太担心, MS Jdbc driver用不好可以换别的,不要在一棵树上掉死呀,第三方的Driver网上很多,有兴趣可以去查一下相信大家在配置Weblogic的CMP的时候也遇到过类似的问题,没关系,一并解决之。 Weblogic真他妈是好好东西,可是要钱啊,一个项目才多少钱?一个Weblogic又要多少钱??算过吗?还好,有Jboss在这里,听说其性能是非常优良的,最爽的就是完全不要钱,还给源码看,老外就是牛。只不过,关于Jboss的技术资料太少,网上一大抄大多是关于2.x的,3.x的版本资料太少,而且各个版本的差别太大,配置的写法完全不一样,我没用过JBOSS2.x也没有发言权,但就Jboss3.x而言总体感觉还是很不错的。尤其是和Jbulider7整合以后更是如虎添翼。关于怎么整合这不是本文要讨论的主题,我会再写文章的,具体要查关于Opentool方面的资料。 Jbuilder+Jboss开发人员根本不用再关心Jboss什么配置,所有应用程序或EJB的部署都是自动到位与Weblogic豪不逊色,而且启动速度要比Weblogic快很多哟!嘿嘿。。。开发项目可以考虑用Jboss拉。看了这么多也够累了吧。Ok 就写到这里拉。文章作者:侃侃 Email: nikerson@163.com< html>



本文转自
http://www.cn-java.com/www1/?action-viewnews-itemid-2492

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值