将 NetBeans 中的 JSF 页面热部署到 JBoss 独立
Hot deploy of JSF pages in NetBeans to JBoss standalone
背景
设置如下:
- 使用 Subversion 的多开发者环境
- NetBeans 8.0.2
- JDK 1.7
- JavaEE6
- JBoss 6.2 EAP 运行宁独立
我们可能不会更改工具;我们可能既不使用 Maven 也不使用 JRebel。硬ware 升级也不在范围内。
代码组织
源代码(包括与 Web 相关的文件)检出到:
C:\Apps-Work\Project\Project-Admin\Project-Admin-User-war\
此目录包含一个通用的开发结构(粗体是从存储库中检出的):
- build - 编译后的文件
- dist - .war 文件
- nbproject - 项目文件
- src - Java源代码
- web - JSF 页面、WEB-INF 目录、CSS 文件等
- build.xml - Ant 脚本
JBoss 安装
Web 应用程序服务器安装到:
C:\Apps-Tools\jboss-eap-6.2
问题
开发-部署-测试 周期非常缓慢。测试网页的单个更改可能需要 wards 30 秒。这是当前流程:
- 在 NetBeans 中编辑文件。
- 保存文件。
- Shift+F11(运行 >> 清理并构建)。
- 切换到浏览器选项卡(http://localhost:9990/console/App.html#deployments)。
- 单击替换。
- 单击选择文件。
- Select 项目-管理员-用户-war.war 文件。
- 单击打开。
- 单击下一步。
- 单击保存。
- 切换到浏览器选项卡(http://localhost:8080/admin/users/)。
- F5 重新加载页面。
构建(第 3 步)大约需要 26 秒;手动部署增加了这一点。
这是理想的开发周期:
- 更改 NetBeans 中的 JSF 页面(注意:这是从存储库中检出的文件)。
- 保存 JSF 页面。
- Alt+Tab 到浏览器 window.
- F5 重新加载页面。
在 Java 源更改上进行热部署并不重要,因为代码开发时间往往比简单的网页布局更改花费的时间长得多。
编辑 意味着开发人员不再编辑从存储库中检出的文件,因此会导致额外的步骤或脚本,或者可能会丢失工作。
其他人建议 保存时部署 功能,即 disabled:
另一个建议(根据屏幕截图)是 运行 应用程序处于调试模式,但选择 Debug >> Project (Ctrl +F5) 更改后未显示页面更新。
问题
是否可以使用给定的工具和约束热部署 JSF 页面?如果是这样,实现理想开发周期所需的具体步骤是什么?
独立配置
README.txt文件显示可以"live deploy"内容:
H) Manual mode only: Live replace portions of currently deployed unzipped content without redeploying:
cp -r target/example.war/foo.html $AS/standalone/deployments/example.war
Windows 上的 cp
命令转换为:
xcopy /e /s /y src dest
这导致:
- 打开命令提示符。
- 更改目录:
cd C:\Apps-Tools\jboss-eap-6.2\standalone\deployments
- 创建 skipdeploy 以防止在复制过程中进行部署:
type nul >> Project-Admin-User-war.war.skipdeploy
- 复制文件以创建包含已更改文件的目录:
xcopy /i /y /e /s C:\Apps-Work\Project\Project-Admin\Project-Admin-User-war\web Project-Admin-User-war.war
下一个:
- 删除skipdeploy:
rm Project-Admin-User-war.war.skipdeploy
- 创建dodeploy:
type nul >> Project-Admin-User-war.war.dodeploy
- Return到浏览器。
- 按F5刷新。
结果是资源包丢失了:
相关
- Is it possible to deploy an exploded war file (unzipped war) in JBoss AS 7
- How can I get JBoss to explode a deployed WAR file?
- https://jasonmarley.wordpress.com/2014/09/11/how-to-deploy-exploded-archives-jboss-eap-6/
这里是对在 http://wiki.netbeans.org 上发现的 2009 年 Ant 脚本更改的描述。也许还有用。
http://wiki.netbeans.org/TaT_DeployOnBuildUsingJBoss
还有另一个脚本解决方案:
How to setup JBoss server with Netbeans?
概览
使用JBoss6.2 EAP实现热部署运行单机模式分三部分完成:配置、分解、热部署。
配置
确保deployment scanner配置如下:
确保配置了 Web 子系统和系统属性:
- 停止 JBoss.
- 编辑
%JBOSS_HOME%\standalone\configuration\standalone.xml
。
立即在 </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>
- 找到网络子系统(例如,
xmlns="urn:jboss:domain:web...
)。
附加以下元素:
<configuration>
<jsp-configuration development="true"/>
</configuration>
- 保存文件。
- 开始JBoss.
爆炸
展开需要提取 WAR 文件的全部内容,其中的内容将在(非常近的)将来部署。
- 清理并构建应用程序(NetBeans 中的Shift+F11)。
- 更改为 JBoss 独立部署目录。
- 创建一个跳过部署文件。
- 创建 WAR 目录。
- 提取 WAR 文件。
- 删除跳过部署文件。
- 创建 部署 文件。
这类似于以下内容(在 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
网络开发
理想的开发周期已经基本实现:
- 在 NetBeans 中编辑文件。
- 保存文件。
- 运行批处理文件。
- Alt+Tab 到浏览器。
- F5刷新
Ant 有一个 OnSaveTask 可以强制转换为 运行 批处理,甚至可以完全替代批处理文件。留作 reader.
的练习
背景
设置如下:
- 使用 Subversion 的多开发者环境
- NetBeans 8.0.2
- JDK 1.7
- JavaEE6
- JBoss 6.2 EAP 运行宁独立
我们可能不会更改工具;我们可能既不使用 Maven 也不使用 JRebel。硬ware 升级也不在范围内。
代码组织
源代码(包括与 Web 相关的文件)检出到:
C:\Apps-Work\Project\Project-Admin\Project-Admin-User-war\
此目录包含一个通用的开发结构(粗体是从存储库中检出的):
- build - 编译后的文件
- dist - .war 文件
- nbproject - 项目文件
- src - Java源代码
- web - JSF 页面、WEB-INF 目录、CSS 文件等
- build.xml - Ant 脚本
JBoss 安装
Web 应用程序服务器安装到:
C:\Apps-Tools\jboss-eap-6.2
问题
开发-部署-测试 周期非常缓慢。测试网页的单个更改可能需要 wards 30 秒。这是当前流程:
- 在 NetBeans 中编辑文件。
- 保存文件。
- Shift+F11(运行 >> 清理并构建)。
- 切换到浏览器选项卡(http://localhost:9990/console/App.html#deployments)。
- 单击替换。
- 单击选择文件。
- Select 项目-管理员-用户-war.war 文件。
- 单击打开。
- 单击下一步。
- 单击保存。
- 切换到浏览器选项卡(http://localhost:8080/admin/users/)。
- F5 重新加载页面。
构建(第 3 步)大约需要 26 秒;手动部署增加了这一点。
这是理想的开发周期:
- 更改 NetBeans 中的 JSF 页面(注意:这是从存储库中检出的文件)。
- 保存 JSF 页面。
- Alt+Tab 到浏览器 window.
- F5 重新加载页面。
在 Java 源更改上进行热部署并不重要,因为代码开发时间往往比简单的网页布局更改花费的时间长得多。
编辑
其他人建议 保存时部署 功能,即 disabled:
另一个建议(根据屏幕截图)是 运行 应用程序处于调试模式,但选择 Debug >> Project (Ctrl +F5) 更改后未显示页面更新。
问题
是否可以使用给定的工具和约束热部署 JSF 页面?如果是这样,实现理想开发周期所需的具体步骤是什么?
独立配置
README.txt文件显示可以"live deploy"内容:
H) Manual mode only: Live replace portions of currently deployed unzipped content without redeploying:
cp -r target/example.war/foo.html $AS/standalone/deployments/example.war
Windows 上的 cp
命令转换为:
xcopy /e /s /y src dest
这导致:
- 打开命令提示符。
- 更改目录:
cd C:\Apps-Tools\jboss-eap-6.2\standalone\deployments
- 创建 skipdeploy 以防止在复制过程中进行部署:
type nul >> Project-Admin-User-war.war.skipdeploy
- 复制文件以创建包含已更改文件的目录:
xcopy /i /y /e /s C:\Apps-Work\Project\Project-Admin\Project-Admin-User-war\web Project-Admin-User-war.war
下一个:
- 删除skipdeploy:
rm Project-Admin-User-war.war.skipdeploy
- 创建dodeploy:
type nul >> Project-Admin-User-war.war.dodeploy
- Return到浏览器。
- 按F5刷新。
结果是资源包丢失了:
相关
- Is it possible to deploy an exploded war file (unzipped war) in JBoss AS 7
- How can I get JBoss to explode a deployed WAR file?
- https://jasonmarley.wordpress.com/2014/09/11/how-to-deploy-exploded-archives-jboss-eap-6/
这里是对在 http://wiki.netbeans.org 上发现的 2009 年 Ant 脚本更改的描述。也许还有用。
http://wiki.netbeans.org/TaT_DeployOnBuildUsingJBoss
还有另一个脚本解决方案:
How to setup JBoss server with Netbeans?
概览
使用JBoss6.2 EAP实现热部署运行单机模式分三部分完成:配置、分解、热部署。
配置
确保deployment scanner配置如下:
确保配置了 Web 子系统和系统属性:
- 停止 JBoss.
- 编辑
%JBOSS_HOME%\standalone\configuration\standalone.xml
。 立即在
</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>
- 找到网络子系统(例如,
xmlns="urn:jboss:domain:web...
)。 附加以下元素:
<configuration> <jsp-configuration development="true"/> </configuration>
- 保存文件。
- 开始JBoss.
爆炸
展开需要提取 WAR 文件的全部内容,其中的内容将在(非常近的)将来部署。
- 清理并构建应用程序(NetBeans 中的Shift+F11)。
- 更改为 JBoss 独立部署目录。
- 创建一个跳过部署文件。
- 创建 WAR 目录。
- 提取 WAR 文件。
- 删除跳过部署文件。
- 创建 部署 文件。
这类似于以下内容(在 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
网络开发
理想的开发周期已经基本实现:
- 在 NetBeans 中编辑文件。
- 保存文件。
- 运行批处理文件。
- Alt+Tab 到浏览器。
- F5刷新
Ant 有一个 OnSaveTask 可以强制转换为 运行 批处理,甚至可以完全替代批处理文件。留作 reader.
的练习