日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在JBossAS7中進行項目部署

AS7的項目部署方式與原有版本相比有了較大變化,本文通過實例來講解AS7中的項目部署方式。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比孟津網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式孟津網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋孟津地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

有關(guān)JBoss AS7的下載和安裝,請參考藍(lán)點上面的另一篇文章:

http://bluedash.net/spaces/JBoss%20AS%207%20快速上手

部署一個簡單的Web項目

下載安裝完成后,我們用standalone方式來啟動JBoss AS7:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/bin$ ./standalone.sh

啟動后,我們試著向AS7中部署一個簡單的項目。首先使用Maven來創(chuàng)建一個簡單的Web工程:

 
 
 
 
  1. mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

生成的項目如下:

.
|-- pom.xml
`-- src
    `-- main
        |-- resources
        `-- webapp
            |-- WEB-INF
            |   `-- web.xml
            `-- index.jsp

使用如下命令將項目打成WAR包:

 
 
 
 
  1. mvn package

得到war:

target
`-- my-webapp.war

接下來,我們將這個war部署進AS7。在AS7的根目錄下,有一個名為'standalone'的目錄,當(dāng)AS7以standalone模式運行時,我們要將項目部署到這里面,進入到standalone目錄:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1$ cd standalone
  2. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone$ ls
  3. configuration deployments   log
  4. data          lib           tmp
  5. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone$ 

standalone目錄中包含許多運行所需的內(nèi)容,比如'configuration'目錄包含了服務(wù)器的有關(guān)配置,我們稍后會進行說明?,F(xiàn)在我們要關(guān)心的是'deployments'目錄,我們要將需要部署的項目放在這里,JBoss AS7會自動掃描這個目錄并進行部署。我們將剛剛制作好的my-webapp.war拷貝至deployments目錄:

 
 
 
 
  1. liweinan@smart:~/projs/my-webapp/target$ cp my-webapp.war ~/projs/jboss-7.0.0.CR1/standalone/deployments/

此時查看AS7的日志輸出:

 
 
 
 
  1. 16:12:33,822 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) Starting deployment of "my-webapp.war"
  2. 16:12:36,616 INFO  [org.jboss.web] (MSC service thread 1-4) registering web context: /my-webapp
  3. 16:12:36,740 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "my-webapp.war"

從日志中可以看出,項目被成功地部署進了AS7。我們試著訪問下已部署的服務(wù):

可以看到部署成功。

AS7中項目的自動部署及手工部署

我們在上一節(jié)通過將項目拷貝至deployments目錄,就實現(xiàn)了AS7對項目的自動掃描及自動部署。實際上AS7還支持手工的部署模式,這樣,我們就可以控制項目的部署及啟動時機。配置AS7的部署模式有兩種方式:一個是通過在配置文件指定,另一個是在AS7運行時,通過管理端來進行實時的配置。

我們首先來看一下配置文件中的內(nèi)容,JBoss AS7相對以前版本比較,大大簡化了精減了配置文件的數(shù)量。原來的*-ds.xml等數(shù)據(jù)庫的配置文件,都被合并至了統(tǒng)一的配置文件:standalone.xml[3] 。這個文件位于剛才提到的/standalone/configuration目錄當(dāng)中,詳細(xì)講解這個配置文件也不是這篇文章要關(guān)注的地方,因此我們只需要了解一下這個配置文件中,與部署有關(guān)的這段內(nèi)容:

 
 
 
 
  1.    
  2.       relative-to="jboss.server.base.dir" path="deployments" />

可以看到,配置中指定deployment-scanner去掃描deployments目錄,掃描間隔為5秒鐘。

除了在配置文件中進行配置,我們也可以在AS7實時運行時,通過管理端來改變AS7的部署方式。首先是登錄到管理端,使用AS7中bin目錄中帶有的管理端連接程序jboss-admin.sh

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/bin$ ./jboss-admin.sh 
  2. You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
  3. [disconnected /] connect 127.0.0.1
  4. Connected to standalone controller at 127.0.0.1:9999
  5. [standalone@127.0.0.1:9999 /] 

連接成功后,我們可以查看當(dāng)前的scanner配置:

 
 
 
 
  1. [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner:read-resource(recursive=true)
  2. {
  3.     "outcome" => "success",
  4.     "result" => {"scanner" => {"default" => {
  5.         "auto-deploy-exploded" => false,
  6.         "auto-deploy-zipped" => true,
  7.         "deployment-timeout" => 60L,
  8.         "name" => "default",
  9.         "path" => "deployments",
  10.         "relative-to" => "jboss.server.base.dir",
  11.         "scan-enabled" => true,
  12.         "scan-interval" => 5000
  13.     }}}
  14. }

如上所示,和配置文件中對應(yīng)的配置是一致的。我們可以移除這個自動掃描的scanner:

 
 
 
 
  1. [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner/scanner=default:remove
  2. {"outcome" => "success"}

此時再次查看:

 
 
 
 
  1. [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner:read-resource(recursive=true)
  2. {
  3.     "outcome" => "success",
  4.     "result" => {"scanner" => undefined}
  5. }

自動部署用的scanner已經(jīng)被移除了。此時,我們將只可以用命令來手工部署所需項目,下面是手工部署的命令:

 
 
 
 
  1. [standalone@127.0.0.1:9999 /] deploy /Users/liweinan/projs/my-webapp/target/my-webapp.war
  2. 'my-webapp.war' deployed successfully.

實驗完成后,我們將剛剛移除的自動部署掃描器恢復(fù)回來:

 
 
 
 
  1. [standalone@127.0.0.1:9999 /] /subsystem=deployment-scanner/scanner=default:add(scan-interval=5000,relative-to="jboss.server.base.dir",path="deployments")
  2. {"outcome" => "success"}

這樣,AS7又可以自動掃描deployments目錄下面的項目,并進行自動部署了。實際上,AS7支持用戶添加多個scanner,每一個scanner都可以獨立配置,掃描不同的目錄,設(shè)置不同的掃描間隔。通過上面的命令舉一反三即可按照實際需求進行配置。

在AS7中部署一個J2EE項目

接下來我們試著將一個完整的J2EE項目部署進AS7,這個項目包括:

◆ 數(shù)據(jù)層,使用Hibernate及JPA Annotation來建模,后面連接AS7的數(shù)據(jù)源

◆ 邏輯層,使用JBoss Seam,EJB3來實現(xiàn)

◆ 表現(xiàn)層:使用JSF

◆ WebService:使用RESTEasy來實現(xiàn)

上面所使用的Hibernate, Seam,RESTEasy等模塊,都是AS7中的默認(rèn)配置,不需要額外進行配置,因此我們使用這樣的一種技術(shù)架構(gòu)。這個項目看起來用了不少東西,似乎很復(fù)雜,其實JBoss社區(qū)已經(jīng)給我們做好了一個demo工程,使用到了上面的所有框架,我們把它直接拿過來用[2] ,使用下面的命令來創(chuàng)建這個項目:

 
 
 
 
  1. mvn archetype:generate -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeVersion=1.0.1.Beta1 -DgroupId=net.bluedash -DartifactId=demo -Dversion=1.0-SNAPSHOT

有關(guān)這個項目的詳細(xì)解說,在此就不展開了,Weld、EJB3、Hibernate的使用并不是本文的重點,我們?nèi)匀话炎⒁饬Ψ旁贏S7的項目部署方面。總之,現(xiàn)在給這個項目進行打包:

 
 
 
 
  1. mvn package

需要特別注意的是,編譯這個項目需要Maven的版本至少在3.0以上,2.x是無法正確編譯的,如果你的Maven版本過低,要注意更新版本至Maven 3。

打包完成后,我們將項目拷貝至deployments目錄進行自動部署:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ cp /Users/liweinan/projs/demo/target/demo.war .

此時服務(wù)器日志輸出如下:

 
 
 
 
  1. 19:31:32,574 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) Service status report
  2.    New missing/unsatisfied dependencies:
  3.       service jboss.naming.context.java.jdbc/__default (missing)

服務(wù)器報錯說沒有找到__default這個數(shù)據(jù)源。這是由于我們在項目中沒有使用AS7中存在的數(shù)據(jù)源造成的。我們首先要知道AS7中的數(shù)據(jù)源配置在哪里,在上一節(jié)我們已經(jīng)了解到,當(dāng)服務(wù)器運行于standalone模式的時候,大部分的配置集中保存在standalone/configuration/standalone.xml當(dāng)中,我們打開這個文件,看一下數(shù)據(jù)源配置方面的內(nèi)容:

 
 
 
 
  1.     
  2.         
  3.         
  4.     

可以看到,AS7默認(rèn)自帶了一個數(shù)據(jù)源,綁定在java:jboss/datasources/ExampleDS這個JNDI名稱之上,我們要在demo項目中使用這個數(shù)據(jù)源。打開demo項目中的數(shù)據(jù)源配置文件:

 
 
 
 
  1. liweinan@smart:~/projs/demo$ vi src/main/resources/META-INF/persistence.xml 

將其中的JNDI數(shù)據(jù)源配置內(nèi)容:

 
 
 
 
  1. jdbc/__default

修改成AS7中提供給我們的數(shù)據(jù)源:

 
 
 
 
  1. java:jboss/datasources/ExampleDS

保存后,使用mvn package命令將項目重新打包,然后將新的項目的war拷貝到AS7的deployments目錄。但是在拷貝之間請稍等一下!我們看一下目前deployments目錄中的內(nèi)容:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls
  2. README.txt      demo.war        demo.war.failed

可以看到,此時deployments目錄中有一個demo.war.failed文件,這個文件被稱為 "Mark File",即標(biāo)記文件,它的文件名與項目文件名相同,但同時帶有一個后綴。AS7用這樣的Mark File來完成兩個任務(wù),一個是表示待部署項目的狀態(tài),另一個是在自動部署的基礎(chǔ)上,給用戶提供一些手工控制部署的能力。此時的demo.war.failed這個Mark File顯然是表示狀態(tài)的,failed說明demo.war剛剛部署失敗的情況。

理解了Mark File,我們可以將新的war拷貝至deployments目錄了:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ cp /Users/liweinan/projs/demo/target/demo.war .

拷貝完成后,就把deployments目錄里面之前有問題的demo.war給覆蓋掉了。此時AS7是不會自動重新部署這個項目的,這是出于可靠性考慮,AS7不會未經(jīng)用戶明確指定,就把一個已有的同名項目的部署狀態(tài)覆蓋掉,即使它是部署失敗的。此時我們就要用Mark File來控制AS7的部署了,我們建立一個名為demo.war.dodeply的空文件,使AS7重新部署demo.war這個項目:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ touch demo.war.dodeploy

此時,AS7便開始重新部署項目了。如果你的手足夠快,此時看一下deployments中的內(nèi)容

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls
  2. README.txt           demo.war.dodeploy    demo.war.isdeploying
  3. demo.war             demo.war.failed

會發(fā)現(xiàn)多出一個demo.war.isdeploying,表明項目正在部署。等部署完成后,deployments目錄中的內(nèi)容就變成了:

 
 
 
 
  1. liweinan@smart:~/projs/jboss-7.0.0.CR1/standalone/deployments$ ls
  2. README.txt        demo.war          demo.war.deployed

這樣,新的項目便部署完成了,如果沒有操作上的失誤的話,這個項目已經(jīng)可以可以訪問到了:

小結(jié)

本文講解了AS7下面的自動部署、手工部署的方法,同時講解了管理端下面與部署相關(guān)的一些命令,以及standalone.xml配置文件中的一些內(nèi)容;最后,我們講解了Mark File的使用方法。希望通過本文,可以幫助大家進行AS7更為深入的學(xué)習(xí)和使用。

備注

[1] JBoss AS7 包含standalone及domain兩種運行方式。有關(guān)JBoss AS7的domain運行方式,請參考藍(lán)點上面的這篇文章:

http://bluedash.net/spaces/JBoss%20AS7中的新概念-域

[2] 關(guān)于這個項目的詳細(xì)說明,請參考藍(lán)點上面的另一篇文章:

http://bluedash.net/spaces/Java%20EE%206%20入門

[3] domain運行模式下面的配置模式有所不同,請參考這篇文章:

http://bluedash.net/spaces/JBoss%20AS7中的新概念-域

[4] 如果要對AS7的部署進行更深入的了解和學(xué)習(xí),需要參考AS7的管理員手冊的相關(guān)章節(jié):

https://docs.jboss.org/author/display/AS7/Admin+Guide#AdminGuide-DeploymentScanner


網(wǎng)站標(biāo)題:在JBossAS7中進行項目部署
本文地址:http://www.dlmjj.cn/article/dhdhhid.html