無責任的爛筆頭

          Concentrate & enjoy!
          posts - 3, comments - 15, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          隨筆檔案

          搜索

          •  

          最新評論

          以Exploded方式部署應用

          Posted on 2010-03-19 16:17 BZ 閱讀(6693) 評論(0)  編輯  收藏 所屬分類: IDE
             使用Eclipse Java EE版本開發Web應用程序時, Eclipse老是將需要部署的內容打成war包。這在開發時, 是個沒有必要的開銷,因為大多數Web Server(或App Server)都支持exploded部署方式。
             要讓Eclipse部署的時候以exploded方式部署,其實沒有想象中復雜。實際上,從Eclipse的Console中可以窺見其工作端倪(以Jboss為例,其它服務器類似):
          Buildfile: /xxx/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730/buildfiles/jboss323.xml
          deploy.j2ee.web:
                [jar] Building jar:
          /home/brian/Dev/Java/eclipse/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/ssh.war
               [move] Moving 1 file to /home/brian/Dev/Java/JBoss/jboss-6.0.0.20100216-M2/server/default/deploy
             可以看到, Eclipse環境去執行了一個Ant腳本--jboss323.xml, 具體來說是執行了其中的deploy.j2ee.web target。也正是這個target完成了war包的制作(jar任務)和部署(move任務)。如果我們要修改Eclipse的行為,需要做的事情就是修改這個target,讓它只作簡單的文件拷貝:
             
          <target name="deploy.j2ee.web">
                  <property name="deploy.dir" location="${server.publish.dir}/${module.name}.war" />
                  
          <mkdir dir="${deploy.dir}" />
                  
          <copy todir="${deploy.dir}">
                      
          <fileset dir="${module.dir}">
                          
          <include name="**/*.*"/>
                          
          <exclude name="**/*.war"/>
                      
          </fileset>
                  
          </copy>
                  
                  
          <sleep seconds="${pause.deploy}"/>
                  
              
          </target>

             現在部署應用就會在Console中看到如下信息:
          Buildfile: /xxx/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730/buildfiles/jboss323.xml
            deploy.j2ee.web:
                 [copy] Copying 1 file to /home/brian/Dev/Java/JBoss/jboss-6.0.0.20100216-M2/server/default/deploy/ssh.war
            BUILD SUCCESSFUL
             需要說明的是:
          •   如果你之前以war包形式部署過, 那么需要在服務器的部署目錄(比如JBoss的server/default)下,將war包移除,否則創建文件夾時會出錯。
          • 如果需要的話(一般如此:)),可以同時將<sleep>任務一并去掉。它會產生一段時間(10秒)的延時,作為本地開發,應該無須忍受這個延時。
          • 這種改動,并不能控制Eclipse執行腳本的時機,只是修改了腳本本身而已。因此,修改了某個文件(比如jsp文件)并不會立即生效(MyEclipse會產生這個效果), 而是需要等待Eclipse執行了上述腳本, 把修改后的文件部署到服務器才能生效。幸運的是,我們可以服務器的部署時間: 在Server面板中雙擊要修改的server, 在出現的界面中展開Publishing, 然后修改Publishing interval (in seconds)即可。


             關于Ant腳本,嚴格地講,你最好同時修改undeploy.j2ee.web target, 因為*.war已經不是一個文件,而是文件夾了,修改如下:

          <target name="undeploy.j2ee.web">
                  <!--
                  <delete file="${server.publish.dir}/${module.name}.war" failonerror="false"> </delete>
                  
          -->
                  
          <delete dir="${server.publish.dir}/${module.name}.war" failonerror="false"> </delete>
                  
          <sleep seconds="${pause.undeploy}"/>
              
          </target>
            類似地,如果你的項目涉及到ejb或ear,你可以修改其它幾項對應的target。

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 屏南县| 台南县| 江城| 韶关市| 绍兴市| 黎川县| 扶余县| 浦东新区| 白河县| 上栗县| 博白县| 微博| 克东县| 广宁县| 周至县| 精河县| SHOW| 栾川县| 宜阳县| 正阳县| 礼泉县| 贵州省| 双桥区| 洪湖市| 河间市| 林芝县| 云阳县| 长海县| 青海省| 安福县| 九龙城区| 桂平市| 安新县| 舞阳县| 高台县| 遂昌县| 兖州市| 五台县| 姜堰市| 平和县| 会泽县|