It計(jì)算機(jī)課件 JBoss使用指南_第1頁
It計(jì)算機(jī)課件 JBoss使用指南_第2頁
It計(jì)算機(jī)課件 JBoss使用指南_第3頁
It計(jì)算機(jī)課件 JBoss使用指南_第4頁
It計(jì)算機(jī)課件 JBoss使用指南_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

神州數(shù)碼融信質(zhì)量管理體系

JBOSS使用指南

Releasevl.O

[jimmy(yang,kun),于2008-05-12編寫]

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

—.JBOSS入門2

1.下載和安裝JBoss2

2.JBoss的目錄結(jié)構(gòu)2

3.啟動服務(wù)器3

4.JMX控制臺4

5.停止服務(wù)器5

6.JBoss中的部署5

—.JBOSS的配置6

1.JBoss日志設(shè)置6

2.web服務(wù)的端口號的修改6

3.JBoss的安全設(shè)置7

3.1jmx-console登錄的用戶名和密碼設(shè)置7

3.2web-console登錄的用戶名和密碼設(shè)置9

4.JBoss數(shù)據(jù)源的配置12

5.JMS使用和設(shè)置14

5.1JMS消息的傳遞模型14

5.2JMS的配置16

三.川X原理和應(yīng)用20

1.什么是JMX20

2.JMX規(guī)范21

3.基于JBoss來寫MBean21

3.1HelioWorld實(shí)例21

3.2程序代碼21

3.3配置文件jboss-service.xml22

3.4將實(shí)例部署到JBOSS22

3.5MBean的效果23

s四.EJB3.0使用說明25

1.EnterpriceJavaBeans(EJB)的概念25

1.1會話Bean:25

1.2實(shí)體Bean:26

1.3消息驅(qū)動Bean(MDB):26

2.會話Bean(SessionBean)26

2.1因?yàn)榭蛻舳诵枰ㄟ^JNDI查找EJB,那么JNDI是什么26

2.2StatelessSessionBeans(無狀態(tài)bean)開發(fā)28

2.3StatelessSessionBean與StatefulSessionBean的區(qū)三別32

2.4SessionBean的生命周期32

3.消息馬區(qū)動Bean(MessageDrivenBean)33

3.1Queue消息的發(fā)送與接收(PTP消息傳遞模型)33

3.2Topic消息的發(fā)送與接收(Pub/sub消息傳遞模型)39

4.實(shí)體Bean(EntityBean)44

4.1持久化persistence,xml配置文件44

4.2實(shí)體Bean發(fā)布前的準(zhǔn)備工作45

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUtCMna

4.3單表映射的實(shí)體Bean45

.JBOSS入門

1.下載和安裝JBoss

在下載和安裝JBoss之前,請開發(fā)者確認(rèn)一下自己的機(jī)器是否安裝了最新版

的JVM。為運(yùn)行JBoss4.2.2GA,開發(fā)者必須提供Java5虛擬機(jī)。在我們動身之

前,請?jiān)俅螜z查一下您是否安裝了合適的JDK,而月.JAVAJ0ME環(huán)境變量是否已

經(jīng)設(shè)置好。

用戶可以從JBoss網(wǎng)站(http://www.jboss.org/jbossas/downloads/)免

費(fèi)下載到JBoss應(yīng)用服務(wù)器。其中,可用的二進(jìn)制版本格式分別有.zip、.tar.gz

以及.bz2。JBoss二進(jìn)制發(fā)布版的具體內(nèi)容與版本格式無關(guān),用戶需要根據(jù)各自

的平臺選擇相應(yīng)的二進(jìn)制版本。在您下載完成JBoss后,將它解壓到合適的機(jī)器

位置上。有一點(diǎn)請注意,包含解壓目錄的完整路徑(比如,Windows操作系統(tǒng)中

的ProgramFiles目錄)上不能夠含有空格,因?yàn)檫@將導(dǎo)致錯誤的出現(xiàn)。

2.JBOSS的目錄結(jié)構(gòu)

安裝JBoss會創(chuàng)建下列目錄結(jié)構(gòu):

目錄描述

bin啟動和關(guān)閉JBoss的腳本

client客戶端與JBoss通信所需的Java庫(JARs)

docs配置的樣本文件(數(shù)據(jù)庫配置等)

docs/dtd在JBoss中使用的各種XML文件的DTD。

lib一些JAR,JBoss啟動時加載,且被所有用oss配置共

享。

server各種JBoss配置。每個配置必須放在不同的子目錄。

子目錄的名字表示配置的名字。

JBoss包含3個默認(rèn)的配置:minimial,default和

all,在你安裝時可以進(jìn)行選擇。

server/allJBoss的完全配置,啟動所有服務(wù),包括集群和HOP。

server/defaultJBoss的默認(rèn)配置,它含有大部分J2EE應(yīng)用所需的標(biāo)

準(zhǔn)服務(wù)。但是,它不含有JAXR服務(wù)、IIOP服務(wù)、或者

其他任何群集服務(wù)。

server/minimal這是啟動JBoss服務(wù)器所要求的最低配置。minimal配置

將啟動日志服務(wù)、JNDI服務(wù)器以及URL部署掃描器,

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

以找到待部署的(新)應(yīng)用。對于那些不需要使用任

何其他J2EE技術(shù),而只是使用自定義服務(wù)的場合而言,

則這種JMX/JBoss配置最適合。它僅僅是服務(wù)器,而

不包含Web容器、不提供EJB和川S支持。

server/default/conf含有指定JBoss核心服務(wù)的jboss-service.xml文件。同時,還包

括核心服務(wù)的其他配置文件。

server/default/data這一目錄存儲持久化數(shù)據(jù),即使服務(wù)器發(fā)生重啟其中的數(shù)據(jù)也

不會丟失。許多JBoss服務(wù)將數(shù)據(jù)存儲在這里,比如Hypersonic

數(shù)據(jù)庫實(shí)例。

server/default/deploy用戶將應(yīng)用代碼(JAR\WAR\EAR文件)部署在此處。同時,

deploy目錄也用于熱部署服務(wù)(即,那些能夠從運(yùn)行服務(wù)器動

態(tài)添加或刪除的服務(wù))。因此,用戶能夠在deploy目錄看到大

量的配置文件。尤其是,用戶能夠看到JMX控制臺應(yīng)用(未打

包的WAR文件),本書前面討論過。JBoss服務(wù)器將定期掃描

該目錄,從而查找是否有組件更新或修改,從而自動完成組件

的重新部署。

server/default/lib服務(wù)器配置所需的JAR文件.用戶可以添加自身的庫文件,比

如JDBC驅(qū)動,等等。

server/default/log日志信息將存儲到該目錄。JBoss使用JakartaLog4j包作為其日

志功能。同時,用戶可以在應(yīng)用中直接使用Log4j日志記錄功

能。

server/default/tmp供部署器臨時存儲未打包應(yīng)用使用,也可以作為其他用途。

server/default/work供編譯JSP使用。

其中,data、log、tmp、work目錄是JBoss創(chuàng)建的。如果用戶沒有啟動過

川oss服務(wù)器,則這些目錄不會被創(chuàng)建。

既然提到了JBoss中的熱部署服務(wù)主題,接下來在探討服務(wù)器配置問題前先

來看看實(shí)際例子。如果還沒有啟動JBoss,則請運(yùn)行它。然后,請?jiān)俅尾榭磀eploy

目錄(用戶必須保證運(yùn)行了default配置),然后刪除mail-service.xml文件,

通過運(yùn)行JBoss服務(wù)器的控制臺能夠?yàn)g覽到如下信息:

13:10:05,235INFO[MailService]Mailservice'java:/Mail'removed

fromJNDI

然后,再次將mail-service,xml文件放回原處,用戶將通過控制臺再次發(fā)

現(xiàn)JBoss重新部署了該服務(wù)。所以,這就是JBoss的熱部署。

3.啟動服務(wù)器

首先,來看看如何運(yùn)行JBoss服務(wù)器。用戶可以在JBoss主安裝目錄的bin

目錄中找到若干個腳本文件。請執(zhí)行run腳本(對于Windows,則運(yùn)行run.bat;

對于Linux、OSX、UNIX系統(tǒng),則運(yùn)行run.sh)。默認(rèn)jboss運(yùn)行default配

置,如果要運(yùn)行all配置請執(zhí)行命令run-callo其中,部署和啟動JBoss組

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

件的具體日志信息能夠在運(yùn)行JBoss的控制臺瀏覽到。如下消息表明,JBoss服

務(wù)器成功運(yùn)行:

11:18:46,828INFO[Server]JBoss(MXMicroKernel)[4.2.2.GA(build:

SVNTag=JBoss_4_2_2_GAdate=200710221139)]Startedin27s:94ms

用戶可以通過Web瀏覽器驗(yàn)證JBoss應(yīng)用服務(wù)器是否在運(yùn)行,其HTTP監(jiān)聽

端口為8080(其中,必須保證在啟動JBoss時,8080端口并沒有被其他應(yīng)用或

服務(wù)占用)。通過Web瀏覽器能夠找到相關(guān)有用的JBoss資源(譯者注:

http://localhost:8080)。

4.JMX控制臺

通過http:〃localhost:8080/jmx-console,即JMX控制臺應(yīng)用,用戶能夠

瀏覽到服務(wù)器活動視圖。圖1.1給出了示例界面。上述界面給出了JBoss管理

控制臺,它提供了構(gòu)成JBoss服務(wù)器的川XMBean原始視圖。我們暫時可以不用

理會控制臺的任何內(nèi)容,但是需要知道控制臺能夠提供運(yùn)行中的JBoss應(yīng)用服務(wù)

器的大量信息。另外,通過它,用戶能夠修改、啟動、停止JBoss組件。比如,

請找到service=JNDIView鏈接,然后單擊。該特定MBean提供了如下服務(wù)內(nèi)容,

即能夠?yàn)g覽服務(wù)器中JNDI命名空間的結(jié)構(gòu)信息。接下來,請?jiān)谠揗Bean顯示頁

面底端找到list操作,然后單擊invoke按鈕。invoke操作將返回綁定到JNDI

樹中的當(dāng)前名字列表,這對于獲得EJB名字很有幫助,比如當(dāng)EJB應(yīng)用客戶端不

能夠解析EJB名字時。

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUtCMna

JMXAgentViewplayphon-jimmy

ObjectNameAlter(e.g."jboss:*-,M*:service=lnvokeG*"):;IApplyFilter]

Catalina

?tyDKSneer

?tvpe=StrinqCache

JMImplementation

?name=Default.service=LoaderReposRory

?type=MBeanReqistrv

?tyDe=MBeanServe「Delegate

perties

?module=a「iuna

?module=ita

?module=txoi

jboss

?database=localDB,servics=Hvpersonic

?nanw=PropertyEditorManaqer.tyPe=Service

?name=SyntemPropertles.type=Service

?readonly=tnje.service=irwoker.ta>get=Naming.tyDe=htW

?service=AttcbutePersistenceService

?service=CliemUse「Transrction

圖1-1JMX管理控制臺Web應(yīng)用視圖

5.停止服務(wù)器

為了能夠停止JBoss服務(wù)器,用戶可以敲入Ctrl-C,或者從bin目錄運(yùn)行

shutdown腳本。甚至,用戶還可以使用管理控制臺(請?jiān)趈boss.system部分找

到type=Server,然后調(diào)用shutdown操作。)。

6.JBoss中的部署

JBoss中的部署過程非常的簡單、直接。在每一個配置中,JBoss不斷的掃

描一個特殊目錄的變化:

[jboss安裝目錄]/server/config-name/deploy

此目錄一般被稱為“部署目錄”。

你可以把下列文件拷貝到此目錄下:

*任何jar庫(其中的類將被自動添加到JBoss的classpath中)

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

*EJBJAR

*WAR(WebApplictionaRrchive)

*EAR(EnterpriseApplicationaRchive)

*包含JBossMBean定義的XML文件

*一個包含EJBJAR、WAR或者EAR的解壓縮內(nèi)容,并以.jar、,war或者.ear

結(jié)尾的目錄。

要重新部署任何上述文件(JAR、WAR、EAR、XML等),用新版本的文件覆

蓋以前的就可以了。JBoss會根據(jù)比較文件的時間發(fā)現(xiàn)改變,然后部署新的文件,

要重新部署一個目錄,更新他的修改時間即可。

.JBOSS的配置

1.JBoss日志設(shè)置

Log4j是JBoss使用的日志功能包。通過conf/jboss-log4j.xml文件能夠控

制JBoss的日志功能。該文件定義了一套Appender、指定了日志文件、具體消

息Category類型的存儲、消息格式以及消息的過濾級別。默認(rèn)時,JBoss會同

時在控制臺和日志文件(位于log/server,log文件中)中生成輸出信息。一共

存在5個基本的日志級別:DEBUG、INFO、WARN、ERROR以及FATAL。其中,控制

臺的日志入口(threshold)為INFO,即用戶通過控制臺能夠?yàn)g覽到提示信息、

警告信息、錯誤信息,但是調(diào)試信息查看不到。相比之下,JBoss并沒有為

server.log文件設(shè)置任何入口,因此所有生成的消息將記錄到server.log文件

中。如果JBoss運(yùn)行過程中出現(xiàn)了錯誤,則通過控制臺可能找不到用戶有用的信

息、,因此建議通過server,log文件查看是否有調(diào)試信息可供解決問題所用。然

而,請注意,通過調(diào)整日志入口能夠在控制臺查看到調(diào)試信息,但是這并沒有保

證所有的JBoss消息都將記錄到server.log文件中。因此,用戶還需要為單個

的Category設(shè)置不同的日志級別。比如,jbossTog4j.xml給出了如下Category.,

<!—Limittheorg.apachecategorytoINFOasitsDEBUGisverbose—>

<categoryname="org.apache">

<priorityvalue="INFO"/>

</category>

2.web服務(wù)的端口號的修改

這點(diǎn)在前文中有所提及,即修改用OSS安裝目錄

server/default/deploy/jboss-web.deployer下的server,xml文件,內(nèi)容如下:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

<Connectorport=n8080naddress="${jboss.bind.address}H

maxThreads=n250nmaxHttpHeaderSize=n8192u

emptySessionPath=,,true!,protocol=nHTTP/l.1n

enableLookups=nfalsenredirectPort=n8443nacceptCount="100n

connectionTimeout=n20000ndisab!eUploadTimeout=ntruen/>

將上面的8080端口修改為你想要的端口即可。重新啟動JBoss后訪問:

http:〃localhost/:新設(shè)置的端口,可看到JBoss的歡迎界面。

3.JBoss的安全設(shè)置

3.1jmx-console登錄的用戶名和密碼設(shè)置

默認(rèn)情況訪問http:〃localhost:8080/jmx-console就可以瀏覽jboss的

部署管理的一些信息,不需要輸入用戶名和密碼,使用起來有點(diǎn)安全隱患。下面

我們針對此問題對jboss進(jìn)行配置,使得訪問jmx-console也必須要知道用戶名

和密碼才可進(jìn)去訪問。步驟如下:

3.1.1修改jboss-web.xml文件

打開/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml

文件,去掉〈security-domain>java:/jaas/jmx-console</security-domain>fi\J

注釋。修改后的該文件內(nèi)容為:

<jboss-web>

<!—Uncommentthesecurity-domaintoenablesecurity.Youwill

needtoeditthehtmladaptorloginconfigurationtosetupthe

loginmodulesusedtoauthenticationusers.—>

<security-domain>java:/jaas/jmx-console</security-domain>

</jboss-web>

3.1.2修改web.xml文件

與3.1.1中的jboss-web.xml同級目錄下的web.xml文件,查找到

〈security-constraint/》節(jié)點(diǎn),去掉它的注釋,修改后該部分內(nèi)容為:

<!-AsecurityconstraintthatrestrictsaccesstotheHTMLJMXconsole

touserswiththeroleJBossAdmin.Edittherolestowhatyouwantand

uncommenttheWEB-INF/jboss-web.xml/security-domainelementtoenable

securedaccesstotheHTMLJMXconsole.—>

<security-constraint>

<web-resource-collection>

<web-resource-name>HtmlAdaptor</web-resource-name>

<description>Anexamplesecurityconfigthatonlyallowsuserswiththe

神州數(shù)碼融信質(zhì)量管理體系

-eJAVA編碼規(guī)范與指南

神州數(shù)國

/ZcD^iUtCMna

roleJBossAdmintoaccesstheHTMLJMXconsolewebapplication

</description>

<url-pattern>/*</url-pattem>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>JBossAdmin</role-name>

</auth-constraint>

</security-constraint>

在此處可以看出,為登錄配置了角色JBossAdmin。

3.1.3修改login-config.xml文件

在第一步中的jmx-console安全域和第二步中的運(yùn)行角色JBossAdmin都

是在login-config.xml中配置,我們在JBoss安裝目錄

/server/default/config下找至U它。查找名字為:jmx-console的

application-policy:

<application-policyname=njmx-consolen>

<authentication>

<login-module

code=norg.jboss.security.auth.spi.UsersRolesLoginModulen

flag="required”>

<module-option

name=nusersPropertiesM>props/perties</module-option>

<module-option

name=nrolesPropertiesH>props/perties</module-option>

</login-module>

</authentication>

</application-policy>

在此處可以看出,登錄的角色、用戶等的信息分別在props目錄下的

jmx-console-roles.properties和jmx-console-users.properties文件中設(shè)

置,分別打開這兩個文件。

其中jmx-console-users.properties文件的內(nèi)容如下:

神州數(shù)碼融信質(zhì)量管理體系

-eJAVA編碼規(guī)范與指南

神州數(shù)國

/ZcD^iUtCMna

#AsamplepertiesfileforusewiththeUsersRolesLoginModule

admin=admin

該文件定義的格式為:用戶名二密碼,在該文件中,默認(rèn)定義了一個用戶名

為admin,密碼也為admin的用戶,讀者可將其改成所需的用戶名和密碼。

jmx-console-roles.properties的內(nèi)容如下:

#AsamplepertiesfileforusewiththeUsersRolesLoginModule

admin=JBossAdmin,Httpinvoker

該文件定義的格式為:用戶名二角色,多個角色以隔開,該文件默認(rèn)為

admin用戶定義了JBossAdmin和Httpinvoker這兩個角色。

配置完成后讀者可以通過訪問:http:〃loc成后st:8可以jmx-console/,

輸入jmx-console-roles.properties文件中定義的用戶名和密碼,訪問

jmx-console的頁面。如圖:

JBossOnlineResources

?JBossDocuEuntation

?JBossWM

?JBomsJIRA

?J巳owsFOHJEU

JBossManagement

?ToEcatmtatum汗ulli(XMLi

?JMX?二。Mole

?JBsmWebCGCSOIS

3.2web-console登錄的用戶名和密碼設(shè)置

默認(rèn)情況下,用戶訪問JBoss的web-console時,不需要輸入用戶名和密碼,

為了安全起見,我們通過修改配置來為其加上用戶名和密碼。步驟如下:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

3.2.1修改jboss-web.xml文件

打開server/default/deploy/management/console-mgr.sar

/web-console.war/WEB-INF/jboss-web.xml文件,去掉

<security-domain>java:/jaas/web-console</security-domain>fl\lYi#,修改

后的文件內(nèi)容為:

<?xmlversion=,1.0,encoding-UTF-81?>

<!DOCTYPEjboss-web

PUBLICn-//JBoss//DTDWebApplication2.3V2//ENn

"42ee/dtd/jboss-web_3_2.dtd">

<jboss-web>

<!—Uncommentthesecurity-domaintoenablesecurity.Youwill

needtoeditthehtmladaptorloginconfigurationtosetupthe

loginmodulesusedtoauthenticationusers.—>

<security-domain>java:^aas/web-console</security-domain>

<!-Thewardependsonthe—>

<depends>jboss.admin:service=PluginManager</depends>

</jboss-web>

3.2.2修改web.xml文件

打開3.2.1中jboss-web.xml同目錄下的web.xml文件,去掉

〈security-constraint>部分的注釋,修改后的該部分內(nèi)容為:

<!—AsecurityconstraintthatrestrictsaccesstotheHTMLJMXconsole

touserswiththeroleJBossAdmin.Edittherolestowhatyouwantand

uncommenttheWEB-INF/jboss-web.xml/security-domainelementtoenable

securedaccesstotheHTMLJMXconsole.—>

<security-constraint>

<web-resource-collection>

<web-resource-name>HtmlAdaptor</web-resource-name>

<description>Anexamplesecurityconfigthatonlyallowsuserswiththe

roleJBossAdmintoaccesstheHTMLJMXconsolewebapplication

</description>

<url-pattern>/*</url-pattem>

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUtCMna

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>JBossAdmin</role-name>

</auth-constraint>

</security-constraint>

3.2.3修改login-config.xml文件

打開JBoss安裝目錄server/default/conf下的login-config.xml文件,

搜索web-console,可找到如下內(nèi)容:

<application-policyname=nweb-consolen>

<authentication>

<login-module

code=norg.jboss.security.auth.spi.UsersRolesLoginModulen

flag="required”>

<module-option

name=,,usersPropertiesn>perties</module-option>

<module-option

name=nrolesPropertiesn>perties</module-option>

</login-module>

</authentication>

</application-policy>

在文件中可以看到,設(shè)置登錄web-console的用戶名和角色等信息分別在

login-config,xml文件所在目錄下的web-console-users,properties和

web-console-roles,properties文件中,但因?yàn)樵撃夸浵聼o這兩個文件,我們

在JBoss安裝目錄server/default/conf/props三目錄下建立這兩個文件,文件

內(nèi)容可參考在"jmx-console登錄的用戶名和密碼設(shè)置”中的兩個相應(yīng)的配置文

件的內(nèi)容,web-console-users,properties文件的內(nèi)容如下:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

#AsamplepertiesfileforusewiththeUsersRolesLoginModule

admin=admin

web-console-roles,properties文件的內(nèi)容如下:

#AsamplepertiesfilefbrusewiththeUsersRolesLoginModule

admin=JBossAdmin,Httpinvoker

因?yàn)榇藭r這兩個文件不與login-config.xml同目錄,所以

login-config,xml文件需進(jìn)行少許修改,修改后的〈application-policyname=

〃web-console〃>元素的內(nèi)容為:

<application-policyname=nweb-consolen>

<authentication>

<login-module

code=norg.jboss.security.auth.spi.UsersRolesLoginModulen

flag="required">

<module-option

name=nusersPropertiesn>props/perties</module-option>

<module-option

name=nrolesPropertiesn>props/perties</module-option>

</login-module>

</authentication>

</application-policy>

4.JBoss數(shù)據(jù)源的配置

在jboss路徑\docs\examples\jca目錄下有各種數(shù)據(jù)庫配置文件的樣本。選擇一個你合

適的,copy到server\all\deploy或server\default\deploy卜,我們以msserver數(shù)據(jù)庫為

列,然后修改其中的如下內(nèi)容:

<?xmlversion-11.0°encoding=,,UTF-8H?>

<datasources>

神州數(shù)碼融信質(zhì)量管理體系

-eJAVA編碼規(guī)范與指南

神州數(shù)圖

D^iUtCMna

<Iocal-tx-datasource>

<jndi-name>DEV_MSSQLDS</jndi-name>

j」二____

<connection-url>jdbc:sqlserver://01:1455;DatabaseName=Beta_Core_Ps

msg_Beta6</connection-url>

<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>

<user-name>ppcn_beta6</user-name>

<password>ppcn_beta6</password>

v!-最小連接池?cái)?shù)目一>

<min-pool-size>5</min-pool-size>

v!—最大連接池?cái)?shù)目一〉

<max-pool-size>800</max-pool-size>

<!-數(shù)據(jù)庫連接空閑時間,單位為分鐘,如果負(fù)載較大,可以設(shè)為5,如果

?般,可以設(shè)為3—>

<idle-timeout-minutes>5</idle-timeout-minutes>

<!—correspondingtype-mappinginthestandardjbosscmp-jdbc.xml—>

<metadata>

<type-mapping>MSSQLSERVER2000</type-mapping>

</metadata>

</local-tx-datasource>

</datasources>

如果后臺沒有報(bào)異常,通過http:〃localhost:8080/imx?console進(jìn)入imx控制臺,

在jdbc欄目可以看到以下內(nèi)容:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUtCMna

jboss.jdbc

?datasource=DEVMSSQLDS.service=metadata

?datasource=DefaultDS,service=metadata

?service=SQLExceDtionProcessor

?service=metadata

代碼示例:

javax.naming.lnitialContextctx=newlnitialContext();

javax.sql.DataSourceds=(DataSource)ctx.lookup(/,java:/DEV_MSSQLDS,z);

另外請注意:該配置文件可"隨意〃命名為XXXX-ds.xml,該命名的后輟請〃

確保"為"-ds.xml”。

5.JMS使用和設(shè)置

Java消息服務(wù)(JavaMessageService,簡稱JMS)是企業(yè)級消息傳遞系統(tǒng),

緊密集成于JbossServer平臺之中。企業(yè)消息傳遞系統(tǒng)使得應(yīng)用程序能夠通過

消息的交換與其他系統(tǒng)之間進(jìn)行通信。

下圖說明jbossJMS消息傳遞。

JbossJMS

應(yīng)用程序A>應(yīng)用程序B

消息生成器消息使用者

5.1JMS消息的傳遞模型

JMS支持兩種消息傳遞模型:點(diǎn)對點(diǎn)(point-to-point,簡稱PTP)和發(fā)布/

訂閱(publish/subscribe,簡稱pub/sub)這兩種消息傳遞模型非常相似,只

有以下區(qū)別:PTP消息傳遞模型規(guī)定了一條消息只能傳遞給一個接收方。Pub/sub

消息傳遞模型允許一條消息傳遞給多個接收方。每種模型都通過擴(kuò)展公用基類來

實(shí)現(xiàn)。例如,PTP類javax.jms.Queue和pub/sub類javax.jms.Topic都擴(kuò)展

javax.jms.Destination類。

5.1.1點(diǎn)對點(diǎn)消息傳遞

通過點(diǎn)對點(diǎn)(PTP)的消息傳遞模型,一個應(yīng)用程序可以向另一個應(yīng)用程序發(fā)送消息。

PTP消息傳遞應(yīng)用程序使用命名隊(duì)列發(fā)送接收消息。隊(duì)列發(fā)送方(生成者)向特定隊(duì)列發(fā)

送消息。隊(duì)列接收方(使用者)從特定隊(duì)列接收消息。

下圖說明PTP消息傳遞。

神州數(shù)碼融信質(zhì)量管理體系

(隊(duì)列發(fā)送方)(隊(duì)列接收方)

一個隊(duì)列可以關(guān)聯(lián)多個隊(duì)列發(fā)送方和接收方,但一條消息僅傳遞給一個隊(duì)列接收方。如

果多個隊(duì)列接收方正在監(jiān)聽隊(duì)列上的消息,jbossJMS將根據(jù)“先來者優(yōu)先”的原則確定由

哪個隊(duì)列接收方接收下一條消息。如果沒有隊(duì)列接收方在監(jiān)聽隊(duì)列,消息將保留在隊(duì)列中,

直至隊(duì)列接收方連接隊(duì)列為止。

5.1.2發(fā)布/訂閱消息傳遞

僅僅允通過發(fā)布/訂閱(pub/sub)消息傳遞模型,應(yīng)用程序能夠?qū)⒁粭l消息發(fā)送到多個

應(yīng)用程序。Pub/sub消息傳遞應(yīng)用程序可通過訂閱主題來發(fā)送和接收消息。主題發(fā)布者(生

成器)可向特定主題發(fā)送消息。主題訂閱者(使用者)從特定主題獲取消息。

下圖說明pub/sub消息傳遞。

監(jiān)聽

(蠹器翥建需蠹,

與PTP消息傳遞模型不同,pub/sub消息傳遞模型允許多個主題訂閱者接收同一條消

息。JMS一直保留消息,直至所有主題訂閱者都收到消息為止。

上面兩種消息傳遞模型里,我們都需要定義消息發(fā)送者和接收者,消息發(fā)送者把消息發(fā)

送到JbossJMS某個Destination,而消息接收者從JbossJMS的某個Destination里獲取消息。

消息接收者可以同步或異步接收消息,一般而言,異步消息接收者的執(zhí)行和伸縮性都優(yōu)于同

步消息接收者,體現(xiàn)在:

1.異步消息接收者創(chuàng)建的網(wǎng)絡(luò)流量比較小。單向推動消息,并使之通過管道進(jìn)入消息

監(jiān)聽器。管道操作支持將多條消息聚合為??個網(wǎng)絡(luò)調(diào)用。

2.異步消息接收者使用的線程比較少。異步消息接收者在不活動期間不使用線程。同

步消息接收者在接收調(diào)用期間內(nèi)使用線程。結(jié)果,線程可能會長時間保持空閑,尤其是如果

該調(diào)用中指定了阻塞超時。

3-對于服務(wù)器上運(yùn)行的應(yīng)用程序代碼,使用異步消息接收者幾乎總是最佳選擇,尤其

是通過消息驅(qū)動Bean。使用異步消息接收者可以防止應(yīng)用程序代碼在服務(wù)器上執(zhí)行阻塞操

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

作。而阻塞操作會使服務(wù)器端線程空閑,甚至?xí)?dǎo)致死鎖。阻塞操作使用所有線程時則發(fā)生

死鎖。如果沒有空余的線程可以處理阻塞操作自身解鎖所需的操作,則該操作永遠(yuǎn)無法停止

阻塞。

Message-DrivenBean由EJB容器進(jìn)行管理,具有--般的JMS接收者所不

具有的優(yōu)點(diǎn),如對于一個Message-drivenBean,容器可創(chuàng)建多個實(shí)例來處理大

量的并發(fā)消息,而一般的川S使用者(consumer)開發(fā)時則必須對此進(jìn)行處理才

能獲得類似的功能。同時Message-DrivenBean可取得EJB所能獲得的標(biāo)準(zhǔn)服

務(wù),如容器管理事務(wù)等服務(wù)。

5.2JMS的配置

當(dāng)使用一個JMSProvider時,有三個Provider-specific因素:

A得到一個JNDI初始化上下文

B用到的連接工廠的名字。

C對目的地的管理和命名協(xié)定。

JBoss同它的JNDI一起執(zhí)行。為了簡單的川Sclient,配置和查找初始化

上下文,同實(shí)現(xiàn)其他J2EE客戶端一樣。JMS-specific來約束1TBoss的JMS

provider(JBossMQ)0JbossMQ是通過xml文件jbossmq-service.xml進(jìn)行配置

的,該文件放在在server/default/deploy/jms下。

5.2.1增加新的消息隊(duì)列

修改文件jbossmq-destinations-service.xml,文件在jboss目錄

(server/default/deploy/jms/)q在文件中已經(jīng)存在幾個缺省的目的地,所以

你比較容易明白怎樣增加到文件中。例如你需要增加一個TestQName的Queue,

所以增加下面的語句到j(luò)bossmq-destinations-service.xml中。這種方式是長

久存在的,不隨著JBoss服務(wù)器關(guān)閉而消失。

<mbeancode="org.jboss.mq.server.jmx.Queue"

name="jboss.mq.destination:service=Queue,name="TestQName">

<depends

optional-attribute-name="DestinationManager">jboss.mq:service=DestinationMa

nager</depends>

</mbean>

另外一種方法是可以通過JMXHTML管理界面。通過

http://localhost:8080/jmx-console來訪問。在jboss.mq下查找

service=DestinationManager的連接。然后在createTopic()或createQueue()

來建立。如圖:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUtCNna

voidcreateQueue()

MBeanOperation.

|ParamParamTypeParamValueParamDescription[

pljava.lang.StringTestQName(nodescription)

]Invoke]

在ParamValue里輸入Queue的名字,用鼠標(biāo)點(diǎn)擊Invoke在

jboss.mq.destination下可以看至name=TestQName,service=Queue,如圖:

jboss.mq.destination

?name=A,service=Queur

?name=B.servicn=Queue

?name=C.servicn=Queur

?name=D$ervice=Queur

?name=DEVTEST.service=Queur

?name=DLQ.service=Queur

?name=TestQ.service=Queur

?name=TestQName,service=Queur

?name=ex.5ervice=Queur

?name=foshanshop.servics=Queur

?name=securedTomc,service=Topic

?name=5tudent.nervice=T0Dic

?name=testDurableToDiaservice=ToDic

?name=testQueue.service=Queur

?name=testTopiaservice=Topic

這種方法建立的目的地是臨時性的,隨著服務(wù)器開始存在,當(dāng)川OSS服務(wù)器

重新啟動時,動態(tài)建立的目的地將會不存在。在JbossMQ中所有目的地都有一個

目的地類型的前綴。對于topic前綴是topic,對于queue前綴是queue。例如

查找一個TestQName的名字,需要查找名字為"queue/TestQName”。

在此種方法中有createTopicO或createQueue()分別有兩種方法:一是有兩個

參數(shù),二是有一個參數(shù)的。兩個參數(shù)分別是:建立的目的地名稱和JNDI名稱。

一個參數(shù)的只是目的地名稱,對于JNDI名稱默認(rèn)是:[目的地類型

(topic/queue)"目的地名稱。在這里我們使用的是第一種方法。直接修改

jbossmq-destinations-service.xml文件。

5.2.2連接工廠

JBossMQ包括為topic和queue幾個不同的連接工廠,每個連接工廠有自己

特性。當(dāng)通過JNDI來查找一個連接工廠時,需要知道此連接工廠的名稱。所有

可用連接工廠和它們的屬性,名稱都會在文件jbossmq-service.xml中。

有三種類型連接工廠,依賴的通訊協(xié)議如下:

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

OIL

快速雙向scoket通訊協(xié)議。它是缺省的。

UIL

超過一個socket協(xié)議,可以使用在通過防火墻訪問,或者當(dāng)客戶端不能正確的

查找到服務(wù)器的IP地址。

RMI

最早的協(xié)議,是穩(wěn)定的,但是比較慢。

JVM

在JBoss2.4之后增加的一個新的連接工廠類型。不需要用socket,當(dāng)客戶端

和JbossMQ使用同樣虛擬機(jī)時,可以使用。在JBoss2.4.1以后版本中,對于

topic-和queue-目的地,連接工廠使用同樣的名字。下表列出了在JBoss中

JMS連接工廠:

目的地類型JNDI名字連接工廠類型

Topic/Queuejava:/ConnectionFactoryJVM

Topic/Queuejava:/XAConnectionFactoryJVM支持XA事務(wù)

Topic/QueueRMIConnectionFactoryRMI

Topic/QueueRMIXAConnectionFactoryRMI支持XA事務(wù)

Topic/QueueConnectionFactoryOIL

Topic/QueueXAConnectionFactoryOIL支持XA事務(wù)

Topic/QueueUlLConnectionFactoryUIL

Topic/QueueUlLXAConnectionFactoryUIL支持XA事務(wù)

5.2.1消息存儲模式配置

在jboss路徑\docs\examples\jms目錄下有各種jms數(shù)據(jù)源配置文件的樣本。選擇一

個你合適的,copy到server\all\deploy\jms或server\default\deploy\jms下,我們以

msserver數(shù)據(jù)庫為列,然后修改其中的如下內(nèi)容:

<?xmlversion="1.0"encoding="UTF-8"?>

<!--$Id:mssql-jdbc2-service.xml633692007-06-0522:22:14Zdbhole$—>

<server>

<!-

|ThedestinationmanageristhecoreservicewithinJBossMQ

->

<mbeancode="org.jboss.mq.server.jmx.DestinationManager"

name="jboss.mq:service=DestinationManager">

<depends

optional-attribute-name="MessageCache">jboss.mq:service=MessageCache</depend

<depends

optional-attribute-name="PersistenceManager">jboss.mq:service=PersistenceManage

r</depends>

<depends

神州數(shù)碼融信質(zhì)量管理體系

JAVA編碼規(guī)范與指南

神州數(shù)碼

D^iUlCNna

optional-attribute-name=,,StateManagern>jboss.mq:service=StateManager</depends>

</mbean>

<mbeancode=norg.jboss.mq.server.MessageCachen

name=,,jboss.mq:service=MessageCachen>

<attributename=,,HighMemoryMarkn>50</attribute>

<attributename=HMaxMemoryMarkn>60</attribute>

<attribute

name=,,CacheStoren>jboss.mq:service=PersistenceManager</attribute>

</mbean>

<mbeancode="org.jboss.mq.pm.jdbc2.MSSQLPersistenceManager”

name=ujboss.mq:service=PersistenceManagern>

<depends

optional-attribute-name=nConnectionManagern>jboss.jca:service=DataSourceBinding,

name=DEV_MSSQLDS</depends>

<attributename=nSqlPropertiesn>

BLOB_TYPE=BINARYSTREAM_BLOB

INSERTTX=INSERTINTOJMSTRANSACTIONS(TXID)values(?)

INSERTMESSAGE=INSERTINTOJMSMESSAGES(MESSAGEID,

DESTINATION,MESSAGEBLOB,TXID,TXOP)VALUES(?,?,?,?,?)

SELECT_ALL_UNCOMMITED_TXSSELECTTXIDFROM

JMS_TRANSACTIONS

SELECTMAXTX=SELECTMAX(TXID)FROMJMSMESSAGES

DELETE_ALL_TX=DELETEFROMJMS_TRANSACTIONS

SELECT_MESSAGES_IN_DESTSELECTMESSAGEID,

MESSAGEBLOBFROMJMSMESSAGESWHEREDESTINATION=?

SELECTMESSAGEKEYSJNDEST=SELECTMESSAGEIDFROM

JMSMESSAGESWHEREDESTINATION=?

SELECTMESSAGE=SELECTMESSAGEID,MESSAGEBLOBFROM

JMSMESSAGESWHEREMESSAGEID=?ANDDESTINATION=?

MARKMESSAGE=UPDATEJMS_MESSAGESSETTXID=?,TXOP=?

WHEREMESSAGEID=?ANDDESTINATION=?

UPDATE_MESSAGEUPDATEJMS_MESSAGESSET

MESSAGEBLOB=?WHEREMESSAGEID=?ANDDESTINATION=?________

UPDATE_MARKED_MESSAGES=UPDATEJMS_MESSAGESSET

TXID=?,TXOP=?WHERETXOP=?

UPDATEMARKEDMESSAGESWITHTXUPDATE

JMS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論