版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2160-2024激光共聚焦顯微鏡校準(zhǔn)規(guī)范
- 課件講稿職場教學(xué)課件
- 2024年展覽策劃與組織合同
- 2024年度獎學(xué)金獎品采購合同
- 2024年度鋼材生產(chǎn)設(shè)備采購合同
- 2024購銷違約合同范本范文
- 2024融資互相擔(dān)保合同范本
- 2024年子女撫養(yǎng)權(quán)協(xié)議書范本
- 2024年度標(biāo)的500萬元廣告發(fā)布合同
- 2024就新能源公交車采購的買賣合同
- 實(shí)驗(yàn)室定期自查制度
- 建設(shè)施工合同書證據(jù)目錄
- 7 中華民族一家親 互相尊重 守望相助 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治五年級上冊統(tǒng)編版
- 2024年高考?xì)v史真題+模擬題專項(xiàng)版匯編專題03古代中國的思想文化與科技含解析
- 中醫(yī)疫病防治
- 2024九年級英語下冊 Unit 7 Work for PeaceLesson 39 Having Good Relationships in Your Community教學(xué)設(shè)計(jì)(新版)冀教版
- 《深?!分械纳蕯⑹屡c鏡像闡釋
- 2023年中考英語備考讓步狀語從句練習(xí)題(附答案)
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- ISO9001:2015內(nèi)部質(zhì)量審核控制程序
- 柔性生產(chǎn)線設(shè)計(jì)
評論
0/150
提交評論