自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在JBoss AS7中進(jìn)行項(xiàng)目部署

開(kāi)發(fā) 后端
AS7的項(xiàng)目部署方式與原有版本相比有了較大變化,本文通過(guò)實(shí)例來(lái)講解AS7中的項(xiàng)目部署方式。

AS7的項(xiàng)目部署方式與原有版本相比有了較大變化,本文通過(guò)實(shí)例來(lái)講解AS7中的項(xiàng)目部署方式。

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

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

部署一個(gè)簡(jiǎn)單的Web項(xiàng)目

下載安裝完成后,我們用standalone方式來(lái)啟動(dòng)JBoss AS7:

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

啟動(dòng)后,我們?cè)囍駻S7中部署一個(gè)簡(jiǎn)單的項(xiàng)目。首先使用Maven來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的Web工程:

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

生成的項(xiàng)目如下:

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

使用如下命令將項(xiàng)目打成WAR包:

  1. mvn package 

得到war:

target
`-- my-webapp.war

接下來(lái),我們將這個(gè)war部署進(jìn)AS7。在AS7的根目錄下,有一個(gè)名為'standalone'的目錄,當(dāng)AS7以standalone模式運(yùn)行時(shí),我們要將項(xiàng)目部署到這里面,進(jìn)入到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目錄中包含許多運(yùn)行所需的內(nèi)容,比如'configuration'目錄包含了服務(wù)器的有關(guān)配置,我們稍后會(huì)進(jìn)行說(shuō)明?,F(xiàn)在我們要關(guān)心的是'deployments'目錄,我們要將需要部署的項(xiàng)目放在這里,JBoss AS7會(huì)自動(dòng)掃描這個(gè)目錄并進(jìn)行部署。我們將剛剛制作好的my-webapp.war拷貝至deployments目錄:

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

此時(shí)查看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" 

從日志中可以看出,項(xiàng)目被成功地部署進(jìn)了AS7。我們?cè)囍L問(wèn)下已部署的服務(wù):

可以看到部署成功。

AS7中項(xiàng)目的自動(dòng)部署及手工部署

我們?cè)谏弦还?jié)通過(guò)將項(xiàng)目拷貝至deployments目錄,就實(shí)現(xiàn)了AS7對(duì)項(xiàng)目的自動(dòng)掃描及自動(dòng)部署。實(shí)際上AS7還支持手工的部署模式,這樣,我們就可以控制項(xiàng)目的部署及啟動(dòng)時(shí)機(jī)。配置AS7的部署模式有兩種方式:一個(gè)是通過(guò)在配置文件指定,另一個(gè)是在AS7運(yùn)行時(shí),通過(guò)管理端來(lái)進(jìn)行實(shí)時(shí)的配置。

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

  1. <subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0"> 
  2.    <deployment-scanner scan-interval="5000"  
  3.       relative-to="jboss.server.base.dir" path="deployments" /> 
  4. </subsystem> 

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

除了在配置文件中進(jìn)行配置,我們也可以在AS7實(shí)時(shí)運(yùn)行時(shí),通過(guò)管理端來(lái)改變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.     "outcome" => "success", 
  3.     "result" => {"scanner" => {"default" => { 
  4.         "auto-deploy-exploded" => false, 
  5.         "auto-deploy-zipped" => true, 
  6.         "deployment-timeout" => 60L, 
  7.         "name" => "default", 
  8.         "path" => "deployments", 
  9.         "relative-to" => "jboss.server.base.dir", 
  10.         "scan-enabled" => true, 
  11.         "scan-interval" => 5000 
  12.     }}} 

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

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

此時(shí)再次查看:

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

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

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

實(shí)驗(yàn)完成后,我們將剛剛移除的自動(dòng)部署掃描器恢復(fù)回來(lái):

  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又可以自動(dòng)掃描deployments目錄下面的項(xiàng)目,并進(jìn)行自動(dòng)部署了。實(shí)際上,AS7支持用戶添加多個(gè)scanner,每一個(gè)scanner都可以獨(dú)立配置,掃描不同的目錄,設(shè)置不同的掃描間隔。通過(guò)上面的命令舉一反三即可按照實(shí)際需求進(jìn)行配置。

在AS7中部署一個(gè)J2EE項(xiàng)目

接下來(lái)我們?cè)囍鴮⒁粋€(gè)完整的J2EE項(xiàng)目部署進(jìn)AS7,這個(gè)項(xiàng)目包括:

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

◆ 邏輯層,使用JBoss Seam,EJB3來(lái)實(shí)現(xiàn)

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

◆ WebService:使用RESTEasy來(lái)實(shí)現(xiàn)

上面所使用的Hibernate, Seam,RESTEasy等模塊,都是AS7中的默認(rèn)配置,不需要額外進(jìn)行配置,因此我們使用這樣的一種技術(shù)架構(gòu)。這個(gè)項(xiàng)目看起來(lái)用了不少東西,似乎很復(fù)雜,其實(shí)JBoss社區(qū)已經(jīng)給我們做好了一個(gè)demo工程,使用到了上面的所有框架,我們把它直接拿過(guò)來(lái)用[2] ,使用下面的命令來(lái)創(chuàng)建這個(gè)項(xià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)這個(gè)項(xiàng)目的詳細(xì)解說(shuō),在此就不展開(kāi)了,Weld、EJB3、Hibernate的使用并不是本文的重點(diǎn),我們?nèi)匀话炎⒁饬Ψ旁贏S7的項(xiàng)目部署方面??傊?,現(xiàn)在給這個(gè)項(xiàng)目進(jìn)行打包:

  1. mvn package 

需要特別注意的是,編譯這個(gè)項(xiàng)目需要Maven的版本至少在3.0以上,2.x是無(wú)法正確編譯的,如果你的Maven版本過(guò)低,要注意更新版本至Maven 3。

打包完成后,我們將項(xiàng)目拷貝至deployments目錄進(jìn)行自動(dòng)部署:

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

此時(shí)服務(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ù)器報(bào)錯(cuò)說(shuō)沒(méi)有找到__default這個(gè)數(shù)據(jù)源。這是由于我們?cè)陧?xiàng)目中沒(méi)有使用AS7中存在的數(shù)據(jù)源造成的。我們首先要知道AS7中的數(shù)據(jù)源配置在哪里,在上一節(jié)我們已經(jīng)了解到,當(dāng)服務(wù)器運(yùn)行于standalone模式的時(shí)候,大部分的配置集中保存在standalone/configuration/standalone.xml當(dāng)中,我們打開(kāi)這個(gè)文件,看一下數(shù)據(jù)源配置方面的內(nèi)容:

  1. <subsystem xmlns="urn:jboss:domain:datasources:1.0"> 
  2.     <datasources> 
  3.         <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true"> 
  4.  
  5.         </datasource> 
  6.     </datasources> 
  7. </subsystem> 

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

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

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

  1. <jta-data-source>jdbc/__default</jta-data-source> 

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

  1. <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> 

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

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

可以看到,此時(shí)deployments目錄中有一個(gè)demo.war.failed文件,這個(gè)文件被稱為 "Mark File",即標(biāo)記文件,它的文件名與項(xiàng)目文件名相同,但同時(shí)帶有一個(gè)后綴。AS7用這樣的Mark File來(lái)完成兩個(gè)任務(wù),一個(gè)是表示待部署項(xiàng)目的狀態(tài),另一個(gè)是在自動(dòng)部署的基礎(chǔ)上,給用戶提供一些手工控制部署的能力。此時(shí)的demo.war.failed這個(gè)Mark File顯然是表示狀態(tài)的,failed說(shuō)明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目錄里面之前有問(wèn)題的demo.war給覆蓋掉了。此時(shí)AS7是不會(huì)自動(dòng)重新部署這個(gè)項(xiàng)目的,這是出于可靠性考慮,AS7不會(huì)未經(jīng)用戶明確指定,就把一個(gè)已有的同名項(xiàng)目的部署狀態(tài)覆蓋掉,即使它是部署失敗的。此時(shí)我們就要用Mark File來(lái)控制AS7的部署了,我們建立一個(gè)名為demo.war.dodeply的空文件,使AS7重新部署demo.war這個(gè)項(xiàng)目:

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

此時(shí),AS7便開(kāi)始重新部署項(xiàng)目了。如果你的手足夠快,此時(shí)看一下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 

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

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

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

小結(jié)

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

備注

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

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

[2] 關(guān)于這個(gè)項(xiàng)目的詳細(xì)說(shuō)明,請(qǐng)參考藍(lán)點(diǎn)上面的另一篇文章:

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

[3] domain運(yùn)行模式下面的配置模式有所不同,請(qǐng)參考這篇文章:

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

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

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

原文鏈接:http://bluedash.iteye.com/blog/1282169

【編輯推薦】

  1. 揭開(kāi)Java EE開(kāi)發(fā)框架之謎
  2. 紅帽的PaaS平臺(tái)OpenShift支持Java EE 6
  3. 簡(jiǎn)單介紹Java EE容器
  4. 詳細(xì)介紹Java EE開(kāi)發(fā)四大常用框架
  5. 初學(xué)者如何開(kāi)發(fā)出高質(zhì)量Java EE系統(tǒng)
責(zé)任編輯:林師授 來(lái)源: 阿男bluedash的博客
相關(guān)推薦

2012-02-16 09:34:27

JavaJBossJBoss AS7

2009-06-22 10:29:11

集成測(cè)試Spring

2009-09-07 07:38:05

Myeclipse項(xiàng)目

2011-08-01 10:41:59

Xcode 條件編譯

2022-02-18 07:27:01

Nest項(xiàng)目

2011-12-31 09:49:30

MavenJava

2009-03-03 09:00:57

Silverlight數(shù)據(jù)驗(yàn)證UI控件

2023-08-02 08:02:30

Redis數(shù)據(jù)原生方法

2023-10-18 18:31:04

SQL查詢數(shù)據(jù)

2021-03-24 09:30:02

Jupyter not單元測(cè)試代碼

2021-08-27 14:36:01

主題建模BerTopic

2020-06-30 08:23:00

JavaScript開(kāi)發(fā)技術(shù)

2019-04-18 09:15:05

DaskPython計(jì)算

2024-05-06 13:34:28

WireGoogleGo

2009-06-29 17:07:54

EJB部署Jboss

2016-08-22 11:46:53

GitLinux開(kāi)源

2009-12-11 09:43:43

靜態(tài)路由配置

2012-04-09 13:39:37

ibmdw

2020-03-07 18:00:17

logzeroPython日志記錄

2010-03-30 18:48:24

Oracle 學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)