国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在JBoss中配置多個(gè)數(shù)據(jù)庫(kù)和數(shù)據(jù)源

2019-11-18 13:05:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  JBoss是一款非常強(qiáng)大的J2EE應(yīng)用程序服務(wù)器,但是這種強(qiáng)大的功能也帶來(lái)了復(fù)雜性。本文作者M(jìn)arcus Zarra分析了如何在JBoss中配置多個(gè)數(shù)據(jù)庫(kù)以及數(shù)據(jù)源。
  
  配置數(shù)據(jù)源
  JBoss的默認(rèn)安裝過(guò)程總共有三種配置選項(xiàng):所有的(all)、默認(rèn)的(default)和最小的(minimal)。假如你第一次啟動(dòng)JBoss服務(wù)器的時(shí)候沒(méi)有附帶任何參數(shù),它自然就運(yùn)行了默認(rèn)配置。假如需要運(yùn)行其它的配置,就必須使用-C參數(shù)運(yùn)行啟動(dòng)腳本,如下所示:
  
  ${JBOSS.ROOT}/bin/run.sh -c minimal
  
  用這種方式啟動(dòng)JBoss就指示它使用最小的服務(wù)器配置代替默認(rèn)的配置。但是試圖改變JBoss自身的配置的時(shí)候,這種技術(shù)是非常有用的。你可以在不同的配置中進(jìn)行修改操作,假如有必要就回滾到默認(rèn)配置。可是,你在弄混數(shù)據(jù)源之前,應(yīng)該把默認(rèn)配置復(fù)制一份,這樣就可以安全地操作該副本了(在本文中,我把自己的副本叫作example,因此在服務(wù)器目錄中有四種配置信息:所有的、默認(rèn)的、最小的和example)。
  
  在JBoss中改變默認(rèn)數(shù)據(jù)源的第一步是配置一個(gè)新數(shù)據(jù)源。JBoss中所有的數(shù)據(jù)庫(kù)配置都在你所工作的服務(wù)器目錄下的deploy目錄中定義的(在例子中是server/example/deploy)。JBoss使用的默認(rèn)數(shù)據(jù)庫(kù)是純java數(shù)據(jù)庫(kù)Hypersonic。這個(gè)數(shù)據(jù)庫(kù)的配置信息位于hsqldb-ds.xml文件中。這個(gè)XML配置文件描述了如何連接到Hypersonic數(shù)據(jù)庫(kù)。刪除這個(gè)文件中的所有注釋之后,我們得到如下所示的配置信息:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <datasources>
  <local-tx-datasource>
  <jndi-name>DefaultDS</jndi-name>
  <connection-url>
  jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB
  </connection-url>
  <driver-class>org.hsqldb.jdbcDriver</driver-class>
  <user-name>sa</user-name>
  <passWord></password>
  <min-pool-size>5</min-pool-size>
  <max-pool-size>20</max-pool-size>
  <idle-timeout-minutes>0</idle-timeout-minutes>
  <track-statements/>
  <security-domain>HsqlDbRealm</security-domain>
  <depends>jboss:service=Hypersonic,database=localDB</depends>
  </local-tx-datasource>
  <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=localDB">
  <attribute name="Database">localDB</attribute>
  <attribute name="In  </mbean>
  </datasources>
  
  這些參數(shù)中的大多數(shù)與JDBC的參數(shù)相似。根(root)下的第一個(gè)部分是<local-tx-datasource>。這是你定義數(shù)據(jù)庫(kù)以及如何連接該數(shù)據(jù)庫(kù)的位置:驅(qū)動(dòng)程序、URL、用戶(hù)名和密碼。你還定義了連接池中應(yīng)該有多少個(gè)連接。
  
  第二步分包含了兩個(gè)有趣的參數(shù):
  
  · <security-domain>答應(yīng)你在login-config.xml文件中而不是在數(shù)據(jù)源配置信息中配置數(shù)據(jù)庫(kù)的用戶(hù)名和密碼。
  
  · <depends>指定該服務(wù)只有在它所依靠的服務(wù)啟動(dòng)后才啟動(dòng)。該參數(shù)答應(yīng)你編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)該正確運(yùn)行的服務(wù)。<depends>標(biāo)簽還指示JBoss根據(jù)需要關(guān)閉某些數(shù)據(jù)項(xiàng)。示例中的這個(gè)標(biāo)記表明mbean必須在數(shù)據(jù)庫(kù)啟動(dòng)之前啟動(dòng),在數(shù)據(jù)庫(kù)關(guān)閉之后關(guān)閉。
  
  在定義好數(shù)據(jù)源之后,服務(wù)器的其它部分就可以使用它了。希望使用這個(gè)數(shù)據(jù)源的任何其它服務(wù)或配置都必須使用JNDI名稱(chēng)來(lái)引用它。在示例中,JNDI名稱(chēng)是DefaultDS。
  
  添加另一個(gè)數(shù)據(jù)源
  為了給JBoss添加另一個(gè)數(shù)據(jù)源,你需要建立一個(gè)新的配置文件。我希望建立一個(gè)數(shù)據(jù)源,它連接到我本機(jī)的
MySQL數(shù)據(jù)庫(kù),并專(zhuān)門(mén)使用example數(shù)據(jù)庫(kù)。為了達(dá)到這個(gè)目標(biāo),我建立了一個(gè)與前面一個(gè)類(lèi)似的配置文件:
  
  <?xml version="1.0" encoding="UTF-8"?>
  <datasources>
  <local-tx-datasource>
  <jndi-name>ExampleDS</jndi-name>
  <connection-url>jdbc:mysql://localhost/example</connection-url>
  <driver-class>org.gjt.mm.mysql.Driver</driver-class>
  <user-name>exampleUser</user-name>
  <password>examplePassword</password>
  <min-pool-size>5</min-pool-size>
  <max-pool-size>20</max-pool-size>
  <idle-timeout-minutes>0</idle-timeout-minutes>
  <track-statements/>
  </local-tx-datasource>
  </datasources>
  
  我建立了名為ExampleDS的數(shù)據(jù)源,它通過(guò)JDBC,使用用戶(hù)名exampleUser和密碼examplePassword連接到一個(gè)MySQL數(shù)據(jù)庫(kù)。我還非凡指定連接池最少有5個(gè)連接,最多不超過(guò)20個(gè)連接,并且這些連接不能空閑。接著我把這個(gè)文件存儲(chǔ)為deploy目錄中的example-ds.xml(這個(gè)文件的名稱(chēng)并不重要,但是名稱(chēng)一致是有好處的)。
  
  由于我的新數(shù)據(jù)源不需要、也不依靠于任何其它的模塊,配置信息中就沒(méi)有<depends>標(biāo)簽。同時(shí),由于我在這個(gè)文件中指定了使用數(shù)據(jù)庫(kù)的用戶(hù)名和密碼,我也不需要參照安全域(security domain)。
  
  使用新的數(shù)據(jù)源
  現(xiàn)在我希望把JBoss中的一些服務(wù)移動(dòng)到我的新數(shù)據(jù)源上。其原因很簡(jiǎn)單:盡管Hypersonic是一個(gè)良好的數(shù)據(jù)庫(kù),但是它不應(yīng)該用于產(chǎn)品環(huán)境和/或高容量(high-traffic)系統(tǒng);MySQL和其它幾個(gè)數(shù)據(jù)庫(kù)可以更好地扮演這個(gè)角色。
  
  Java消息服務(wù)
  JBoss服務(wù)器中使用數(shù)據(jù)庫(kù)的一個(gè)最常見(jiàn)的部分是消息服務(wù)。服務(wù)器的這部分的容量很大,并且應(yīng)該使用我的新數(shù)據(jù)源。Deploy/jms目錄中的下面兩個(gè)文件定義了消息服務(wù)如何使用數(shù)據(jù)源:
  
  · hsqldb-jdbc-state-service.xml
  · hsqldb-jdbc2-service.xml
  
  首先,我修改了其中一個(gè)文件的名稱(chēng)以突出數(shù)據(jù)庫(kù)的類(lèi)型:把hsqldb-jdbc-state-service.xml 更名為mysql-jdbc-state-service.xml。我對(duì)mysql-jdbc-state-service.xml文件只作了一點(diǎn)點(diǎn)修改:<depends>標(biāo)簽應(yīng)該引用新的ExampleDS數(shù)據(jù)源而不是默認(rèn)的DefaultDS。這可以確保該數(shù)據(jù)源在消息服務(wù)啟動(dòng)前啟動(dòng)了。我還改變了注釋信息,表明我用MySQL數(shù)據(jù)庫(kù)代替了默認(rèn)的Hypersonic數(shù)據(jù)庫(kù)。
  下一步,應(yīng)該刪除并替換hsqldb-jdbc2-service.xml文件。由于這個(gè)文件定義了消息服務(wù)如何使用數(shù)據(jù)庫(kù),我們必須在該文件中提供特定數(shù)據(jù)庫(kù)的信息。幸運(yùn)的是,對(duì)于大多數(shù)通用的數(shù)據(jù)庫(kù)來(lái)說(shuō),JBoss替我們完成了這項(xiàng)工作。我從${JBOSS.ROOT}/doc/examples/jms檢索到MySQL特定的文件(mysql-jdbc2-service.xml),并把它放到deploy/jms目錄中。我只對(duì)該文件作了一個(gè)很小的修改,把數(shù)據(jù)源的名稱(chēng)改變?yōu)镋xampleDS,與我在數(shù)據(jù)源配置文件中指定的JNDI名稱(chēng)相匹配。
  
  最后,為了使消息服務(wù)完全轉(zhuǎn)變,我把conf/login-config.xml文件中的DefaultDS改為ExampleDS。這個(gè)設(shè)置告訴JBoss,與消息服務(wù)相關(guān)的登錄信息也使用example數(shù)據(jù)庫(kù)。
  
  調(diào)度治理器
  假如你要使用JBoss的調(diào)度治理器和它的數(shù)據(jù)庫(kù)調(diào)度程序(scheduler),你也必須指向新的數(shù)據(jù)源。該配置文件位于deploy/schedule-manager-service.xml。搜索這個(gè)文件中的DefaultDS,找到需要重新配置的mbean,我把該mbean的DataSourceProperty(數(shù)據(jù)源屬性)指向ExampleDS,替代了指向DefaultDS。
  
  請(qǐng)注重,一定要檢查一個(gè)SQL語(yǔ)句,以確保使用你的數(shù)據(jù)庫(kù)工作正常。
  
  默認(rèn)的容器控制(Container-Managed)持續(xù)性
  
  為了改變默認(rèn)的維持bean(bean-persistence)的數(shù)據(jù)庫(kù),你必須更新conf/standardjbosscmp-jdbc.xml文件,把DefaultDS修改為ExampleDS。此外,你還必須更新<type-mapping>標(biāo)簽以匹配新數(shù)據(jù)庫(kù);這個(gè)標(biāo)簽的值位于該文件中更深入的地方。對(duì)于本文的例子,我把這個(gè)值改變?yōu)閙ySQL。
  
  你還應(yīng)該采用相同的方法更新conf/standardjaws.xml文件:把DefaultDS改變?yōu)镋xampleDS,并更新<type-mapping>標(biāo)簽,以反映使用的數(shù)據(jù)庫(kù)的類(lèi)型。
  
  包裝
  為了確保所有部分都轉(zhuǎn)換到了新數(shù)據(jù)源上,請(qǐng)刪除deploy/hsqldb-ds.xml文件并啟動(dòng)JBoss。假如產(chǎn)生了任何錯(cuò)誤,就說(shuō)明你遺漏了某些配置文件。
  
  總之,我發(fā)現(xiàn)使用內(nèi)建的Hypersonic數(shù)據(jù)庫(kù)進(jìn)行開(kāi)發(fā)比治理外部的數(shù)據(jù)庫(kù)帶來(lái)的痛苦要少一些。但是在產(chǎn)品環(huán)境中,Hypersonic是不適合任務(wù)需要的。把JBoss連接到更加牢固的數(shù)據(jù)庫(kù)對(duì)于維護(hù)服務(wù)器的性能大有幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沈阳市| 修文县| 高阳县| 富民县| 卓尼县| 灌阳县| 临武县| 阿图什市| 花莲县| 美姑县| 灵宝市| 梓潼县| 额尔古纳市| 泾源县| 永春县| 将乐县| 广东省| 汝州市| 钟祥市| 常德市| 平泉县| 北辰区| 府谷县| 淅川县| 洞头县| 兰州市| 宣城市| 泸定县| 江达县| 稷山县| 东丰县| 安福县| 中阳县| 秦皇岛市| 永安市| 宝鸡市| 嘉鱼县| 松潘县| 尼木县| 平泉县| 江西省|