将NetBeans中的JSF页面热部署到JBoss独立版

时间:2016-06-15 16:27:47

标签: jsf netbeans jboss web-deployment

背景

这是设置:

  • 使用Subversion的多开发人员环境
  • NetBeans 8.0.2
  • JDK 1.7
  • Java EE6
  • JBoss 6.2 EAP独立运行

我们可能不会改变工具;我们既不使用Maven也不使用JRebel。硬件升级也不在范围内。

代码组织

源代码(包括与网络相关的文件)已签出:

C:\Apps\07-Work\Project\Project-Admin\Project-Admin-User-war\

此目录包含一个通用开发结构(从存储库中检出粗体):

  • 构建 - 编译文件
  • dist - .war file
  • nbproject - 项目文件
  • src - Java源代码
  • web - JSF页面,WEB-INF目录,CSS文件等。
  • build.xml - Ant脚本

JBoss安装

Web应用程序服务器安装在:

C:\Apps\04-Tools\jboss-eap-6.2

问题

开发 - 部署 - 测试周期非常缓慢。测试网页的单个更改可能需要30秒才能完成。这是当前的流程:

  1. 在NetBeans中编辑文件。
  2. 保存文件。
  3. Shift + F11 运行>>清理和构建)。
  4. 切换到浏览器标签(http://localhost:9990/console/App.html#deployments)。
  5. 点击替换
  6. 点击选择文件
  7. 选择 Project-Admin-User-war.war 文件。
  8. 点击打开
  9. 点击下一步
  10. 点击保存
  11. 切换到浏览器标签(http://localhost:8080/admin/users/)。
  12. F5 重新加载页面。
  13. 构建(步骤3)大约需要26秒;手动部署增加了这一点。

    这是理想的开发周期:

    1. 在NetBeans中更改JSF页面(注意:这是从存储库中检出的文件)。
    2. 保存JSF页面。
    3. Alt + Tab 到浏览器窗口。
    4. F5 重新加载页面。
    5. 对Java源代码更改进行热部署并不重要,因为代码开发时间往往比简单的Web页面布局更改需要更长的时间。

      编辑exploded contents意味着开发人员不再编辑从存储库中检出的文件,因此会产生额外的步骤或脚本,或者可能会丢失工作。

      其他人建议保存时部署功能,即disabled

      Run Project Properties

      另一个建议(根据屏幕截图)是在调试模式下运行应用程序,但选择调试>>项目 Ctrl + F5 )在更改后未显示页面更新。

      问题

      使用给定的工具和约束是否可以热部署JSF页面?如果是这样,实现理想开发周期所需的确切步骤是什么?

      独立配置

      README.txt文件显示可以“实时部署”内容:

        

      H)仅限手动模式:实时替换部分当前部署的解压缩内容而不重新部署:

      cp -r target/example.war/foo.html $AS/standalone/deployments/example.war
      

      Windows上的cp命令转换为:

      xcopy /e /s /y src dest
      

      这导致:

      1. 打开命令提示符。
      2. 更改目录:cd C:\Apps\04-Tools\jboss-eap-6.2\standalone\deployments
      3. 创建skipdeploy以防止在复制过程中进行部署:type nul >> Project-Admin-User-war.war.skipdeploy
      4. 复制文件以创建包含已更改文件的目录: xcopy /i /y /e /s C:\Apps\07-Work\Project\Project-Admin\Project-Admin-User-war\web Project-Admin-User-war.war
      5. 下一步:

        1. 删除skipdeploy:rm Project-Admin-User-war.war.skipdeploy
        2. 创建dodeploy:type nul >> Project-Admin-User-war.war.dodeploy
        3. 返回浏览器。
        4. 按F5刷新。
        5. 结果是资源包丢失了:

          Missing Resource Bundle

          相关

2 个答案:

答案 0 :(得分:1)

以下是http://wiki.netbeans.org上2009年Ant脚本更改的说明。也许它仍然有用。

http://wiki.netbeans.org/TaT_DeployOnBuildUsingJBoss

另一个脚本解决方案:

How to setup JBoss server with Netbeans?

答案 1 :(得分:0)

概述

使用JBoss 6.2实现热部署在独立模式下运行的EAP分为三部分:配置,爆炸和热部署。

配置

确保deployment scanner配置如下:

Deployment Scanner Settings

确保已配置Web子系统和系统属性:

  1. 停止JBoss。
  2. 修改%JBOSS_HOME%\standalone\configuration\standalone.xml
  3. </extensions>之后(<management>之前),禁用缓存:

    <system-properties>
      <property name="java.net.preferIPv4Stack" value="true"/>
      <property name="org.jboss.as.web.deployment.DELETE_WORK_DIR_ONCONTEXTDESTROY" value="true"/>
    </system-properties>
    
  4. 找到网络子系统(例如xmlns="urn:jboss:domain:web...)。
  5. 附加以下元素:

    <configuration>
        <jsp-configuration development="true"/>
    </configuration>
    
  6. 保存文件。
  7. 启动JBoss。
  8. 爆炸

    爆炸需要提取WAR文件的完整内容,其中包含将在(非常接近)未来部署的内容。

    1. 清理并构建应用程序(NetBeans中的 Shift + F11 )。
    2. 转到JBoss独立部署目录。
    3. 创建跳过部署文件。
    4. 创建WAR目录。
    5. 解压WAR文件。
    6. 删除跳过部署文件。
    7. 创建 do deploy 文件。
    8. 这类似于以下内容(在Windows平台上;根据需要替换%JBOSS_HOME%和%PROJECT_HOME%的路径):

      cd %JBOSS_HOME%\standalone\deployments
      type nul >> Project-Admin-User-war.war.skipdeploy
      mkdir Project-Admin-User-war.war
      cd Project-Admin-User-war.war
      jar -xvf %PROJECT_HOME%\dist\Project-Admin-User-war.war
      cd ..
      del *skipdeploy
      type nul >> Project-Admin-User-war.war.dodeploy
      

      热部署

      创建包含以下内容的批处理文件:

      cd %JBOSS_HOME%\standalone\deployments
      type nul >> Project-Admin-User-war.war.skipdeploy
      xcopy /i /y /e /s %PROJECT_HOME%\web Project-Admin-User-war.war
      del *skipdeploy
      type nul >> Project-Admin-User-war.war.dodeploy
      

      网站开发

      理想的开发周期几乎已经实现:

      1. 在NetBeans中编辑文件。
      2. 保存文件。
      3. 运行批处理文件。
      4. Alt + Tab 到浏览器。
      5. F5 刷新。
      6. Ant有OnSaveTask可能被强制运行批处理,甚至完全替换批处理文件。留给读者练习。