• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

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

    發布: 2007-6-21 16:03 | 作者:   | 來源:   | 查看: 25次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      <html><p>
    jboss_tomcat的整合版就不介紹怎么去下載了,很好找的。
    我這里下載的是jboss-3.2.0_tomcat-4.1.24
    那么廢話少說,直接進入主題:
    首先查看文件:jboss_tomcatserverdefaultdeployhsqldb-ds.xml 中的配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- ===================================================================== -->
    <!-- -->
    <!-- JBoss Server Configuration -->
    <!-- -->
    <!-- ===================================================================== -->

    <!-- $Id: hsqldb-ds.xml,v 1.1.2.3 2003/04/01 04:50:07 d_jencks Exp $ -->

    <datasources>
    <local-tx-datasource>
    <!-- remove this depends tag if you are not using the tcp connection url -->
    <depends>jboss:service=Hypersonic</depends>
    <jndi-name>DefaultDS</jndi-name>
    <!-- for tcp connection, allowing other processes to use the hsqldb database -->
    <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url> ------------------》這一行要設置
    <!-- for totally in-memory db, not saved when jboss stops. hsql mbean is unnecessary-->
    <!--connection-url>jdbc:hsqldb:.</connection-url-->
    <!-- for in-process db, saved when jboss stops. hsql mbean is unnecessary-->
    <!--connection-url>jdbc:hsqldb:default-db-name</connection-url-->
    <driver-class>org.hsqldb.jdbcDriver</driver-class> ------------------》這一行要設置
    <user-name>sa</user-name> ------------------》這一行要設置
    <password></password> ------------------》這一行要設置
    <!--example of how to specify class that determines if exception means connection should be destroyed-->


    <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-->
    <min-pool-size>5</min-pool-size>
    </local-tx-datasource>

    <!-- this mbean should be used only when using tcp connections -->
    <mbean code="org.jboss.jdbc.HypersonicDatabase"
    name="jboss:service=Hypersonic">
    <attribute name="Port">1701</attribute> ------------------》這一行要設置
    <attribute name="Silent">true</attribute>
    <attribute name="Database">default</attribute>
    <attribute name="Trace">false</attribute>
    <attribute name="No_system_exit">true</attribute>
    </mbean>
    </datasources>

    我用來配置SQLserver 更改設置得到下面的程序段把它覆蓋掉hsqldb-ds.xml 或改你自定義的名都可以。
    但要注意,這里的JNDINAME是DefaultDS是唯一的不能和別的JNDI重名,我是把上面的hsqldb-ds.xml文件刪除了,
    下面的存成sqlsrv_ds.xml


    <?xml version="1.0" encoding="UTF-8"?>

    <!-- ===================================================================== -->
    <!-- -->
    <!-- JBoss Server Configuration -->
    <!-- -->
    <!-- ===================================================================== -->

    <!-- $Id: hsqldb-ds.xml,v 1.1.2.3 2003/04/01 04:50:07 d_jencks Exp $ -->


    <datasources>
    <local-tx-datasource>
    <!-- remove this depends tag if you are not using the tcp connection url -->
    <depends>jboss:service=Hypersonic</depends>
    <jndi-name>DefaultDS</jndi-name>
    <!-- for tcp connection, allowing other processes to use the hsqldb database -->
    <connection-url>jdbc:microsoft:sqlserver://192.168.0.221:1433;DatabaseName=mydb;SelectMethod=cursor</connection-url>
    <!-- for totally in-memory db, not saved when jboss stops. hsql mbean is unnecessary-->
    <!--connection-url>jdbc:hsqldb:.</connection-url-->
    <!-- for in-process db, saved when jboss stops. hsql mbean is unnecessary-->
    <!--connection-url>jdbc:hsqldb:default-db-name</connection-url-->
    <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
    <user-name>sa</user-name>
    <password>sa</password>
    <!--example of how to specify class that determines if exception means connection should be destroyed-->


    <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name-->
    <min-pool-size>5</min-pool-size>
    </local-tx-datasource>

    <!-- this mbean should be used only when using tcp connections -->
    <mbean code="org.jboss.jdbc.HypersonicDatabase"
    name="jboss:service=Hypersonic">
    <attribute name="Port">1433</attribute>
    <attribute name="Silent">true</attribute>
    <attribute name="Database">default</attribute>
    <attribute name="Trace">false</attribute>
    <attribute name="No_system_exit">true</attribute>
    </mbean>
    </datasources>

    這里改起來比較簡單,看來應該是可以了吧?滿懷信心啟動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>
    <depends optional-attribute-name="ConnectionManager">jboss.jca:service=LocalTxCM,name=DefaultDS</depends> --->>注意這里
    <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 ) ----->>注意這里
    </attribute>
    </mbean>

    一大堆的代碼,不用說了,前面的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
    </title>
    </head>
    <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")+"<br>");
    }
    con.close();
    }
    catch(Exception e)
    {
    System.err.println("erro conn!!");
    }


    %>

    </body>
    </html>

    運行以后,結果就出來了! 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><p>

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>