在JBoss上进行热部署 – 我如何让JBoss“看到”更改?
我正在开发一个Java EE应用程序,在开发过程中我会在本地JBoss安装中反复部署。 我想通过将我的应用程序直接部署到[JBOSS] / server / default / deploy / myApp来加快构build速度
它似乎工作 – 但似乎在硬部署和JBoss开始使用新类之间似乎有些任意的延迟。 我对JBoss并不是很熟悉,但是我认为它会caching类,这就是导致问题的原因。
我是否正确,如果是的话,如何让JBoss刷新caching?
我的软件包中有同样的问题:( Eclipse IDE + JBoss服务器适配器)+ JBoss AS 7.0.1(社区项目)。
我的解决scheme非常简单 – 你应该去JBosspipe理面板(默认localhost:9990),在configuration文件设置打开核心 – 部署扫描仪。 打开Autodeploy-Exploded(设置为true),按照您的意愿,您可以设置扫描仪时间(默认为5000毫秒),以适合您(我设置为2000,在更改项目时更快速地增量发布到Eclipse中) 。 而已。 现在,JBoss使HOT不仅用于HTML(JSF,XHTML等)文件,而且还负责POJO类(bean等)文件。
不幸的是,这并不容易。 在JBoss背后有更复杂的事情(大多数是ClassLoader相关的),这将阻止你热敷应用程序。
例如,如果您的某些类签名发生更改,您将无法进行HOT-DEPLOY。
到目前为止,使用MyEclipse IDE (付费的Eclipse发行版)是我发现的非常成功的热部署。 不是100%的准确性。 但肯定比JBoss Tools,Netbeans或任何其他基于Eclipse的解决scheme更好。
我一直在寻找免费的工具来完成你刚刚描述的问题 ,如果你想查看一下StackOverflow中的人。
你应该试试JRebel ,它能很好地完成热部署。 有点贵,但值得的钱。 他们有一个试用版。
热部署仅适用于应用程序的静态部分(jsf,xhtml等)的更改。
根据JBoss AS 7.1.1 ,这是一个工作的解决scheme。 最终 :
.war
文件夹中),并用文本编辑器(即Notepad ++)打开它。 完成后,不要忘记将这些更改复制到实际的开发环境中,重build和重新部署。
我也遇到了同样的问题,但是现在我已经掌握了它。
你使用的是日食或命令行还是??
当我使用命令行时,我认为我做了“接缝清理”或“接缝解除”,甚至可能是“接缝重启”,接着是“接缝爆裂”。 我可能曾尝试过所有这些,但从来不打扰每一个人的行为。
这个想法是从两个地方删除部署的战争文件
1. $JBOSS_HOME/server/default/deploy 2. $PROJECT_HOME/exploded_archives
我很确定“seam undeploy”移除了第一个,“seam clean”移除了第二个。
当我使用eclipse(我使用免费的)时,我首先closures“Project / Build Automatically”然后当我准备部署时,根据我所做的更改,执行Project / Build Project或Project / Build All。 当我更改xhtml时,Build Project就足够了。 当我更改Java源代码全部作品。 有可能这些做同样的事情,不同的是在我的想象中,但这些东西的一些组合将为你工作。
你不得不看输出。 偶尔应用程序不会被清理或部署。 这将导致没有看到你的变化。 有时我先closures服务器,然后重build/清理/部署项目。
希望这可以帮助。
TDR
find这个链接的解决scheme:
该怎么办:
- configuration爆炸的战争神器有扩展名.war
- 将爆炸的工件部署到WildFly或Jboss
- configurationIntelliJ更新资源更新操作
当我修改一个页面(网页),我更新,当我刷新networking浏览器:是所有与我的国防部。 我configuration了自动扫描Jboss(不知道它确实有帮助)
其实我的问题是,命令行mvn实用程序由于某种原因不会看到更改。 我在“部署扫描程序”中打开了“自动部署”,但仍然没有任何区别。 但是,我在Eclipse环境中玩耍,因为我已经添加了一个JBoss服务器的服务器窗口,我发现我有能力在我的工作区“添加或删除…”模块。 一旦项目被添加,每当我改变了代码,代码更改被部署扫描器检测到,JBoss通过更新代码循环! 奇迹般有效。
以下是设置这些所需的步骤;
首先,如果您还没有这样做,请使用File-> New-> Other-> Server将您的JBoss服务器添加到您的Eclipse中,然后通过添加您的JBoss AS 7服务器的动作。 确保find您正在使用的目录。
一旦添加,在Eclipse的底部附近向下看到“服务器”选项卡。 你应该看到你的JBoss服务器。 突出显示它并查找“添加或删除…”。 从那里你应该看到你的项目。
一旦添加,对你的代码做一个小小的改动,并且看着JBoss去你的城市热点部署。
我一直在用Eclipse和Wildfly开发一个项目,由于在应用程序中部署了我需要的所有第三方库,爆炸的EAR文件变得越来越大。 我指着部署到我的Maven仓库,我想每次重新复制瓶子。 因此,当我更改服务层中的Java代码时,重新部署应用程序变成了一场噩梦。
然后转向Hotswap代理,这有助于在不重新部署应用程序的情况下查看EJB代码的更改。
不过,我最近升级到了Wildfly 10,Java 8和JBoss Developer Studio 10,在这个过程中,我花了一些时间将所有第三方应用程序jar包,例如primefaces移动到Wildfly模块中,并从我的部署configuration中删除了我的Maven回购。 现在,通过Eclipse重新部署整个应用程序是一个非常大的应用程序,只需要几秒钟,比以前快得多。 我甚至不觉得有必要安装Hotswap,也不想冒任何风险。
所以,如果你使用Wildfly在Eclipse下构build,那么使用Wildfly模块让你的应用程序清除第三方库,你将会变得更好。
只是我的两分钱:
-
冷部署是停止应用程序(或停止整个服务器)时部署应用程序的方式,然后安装新版本,最后重新启动应用程序(或启动整个服务器)。 它适用于正式的生产部署,但在开发过程中这样做会非常慢。 忘记快速发展,如果你这样做。
-
自动部署是服务器必须定期重新扫描新EAR / WAR的能力,并在后台为您自动部署,或者在您更改源代码时让IDE(Eclipse)自动部署整个应用程序。 JBoss是这样做的,但是JBoss的市场部门把这种误导性的“ 热部署 ”称为“ 热部署 ”。 与冷configuration相比,自动部署并不那么慢,但与热configuration相比,真的很慢。
-
热部署是在“ 键入 ”的情况下部署在幕后的能力。 当您进行更改时,无需重新部署整个应用程序。 热部署只会部署更改。 你改变一个Java源代码,瞧! 它已经在运行了。 你从来没有注意到它正在部署它。 JBoss不能这样做,除非你买JRebel(或类似的),但是这对我来说太贵了(我便宜)。
现在我的“销售点”:D
在开发过程中如何使用Tomcat ? 整天都有热门的部署 …免费。 我在开发过程中一直这样做,然后部署在WebSphere,JBoss或Weblogic上。 不要误解我的意思,这三个对于生产来说是非常好的,但对于在本地机器上进行快速开发真的很有帮助。 如果你整天使用这三种方法,开发效率就会下降。
根据我的经验,我停止使用WebSphere,JBoss和Weblogic进行快速开发。 尽pipe如此,我仍然将它们安装在本地环境中,但仅用于偶尔可能需要运行的testing。 在我获得惊人的开发速度的同时,我不会为JRebel付费。 我提到Tomcat是否与JBoss完全兼容?
Tomcat是免费的,不仅具有自动部署function,而且还可以在Eclipse中input真正的热部署(Java代码,JSP,JSF,XHTML)( 是的,你阅读的很好 )。 MYKong有一个页面( https://www.mkyong.com/eclipse/how-to-configure-hot-deploy-in-eclipse/ ),详细介绍如何设置它。
你喜欢我的销售情况吗?
干杯!
Netbeans 8.02和8.1 IDE和JBOSS EAP 6.4的解决scheme:
- 从Netbeans的服务标签中,添加JBOSS服务器到你的“服务器”节点。
-
如果您使用MAVEN,netbeans会将文件和maven副本文件编译到./target目录。 您需要创build从。\ target到JBOSS_HOME \ standalone \ deployments的符号链接。 在Windows下,一个示例命令将是
cd %JBOSS_HOME%\standalone\deployments mklink /d MyWebApplication.war %PROJECTS_HOME%\MyWebApplication\target\MyWebApplication-1.0.0
上面创build了一个从
%JBOSS_HOME%\standalone\deployments\MyWebApplication.war
到\target\MyWebApplication-1.0.0
的符号链接,这是maven在编译之后或在jsp,html或任何其他文件更改之后传输所有文件的位置。 -
最后想到的是在%
CentralManagement.war.dodeploy
%\ standalone \ deployments中创build一个CentralManagement.war.dodeploy
文件。 这个文件将告诉JBOSS部署战争“文件”作为一个Web应用程序
在debugging模式下启动服务器,它将跟踪方法内的更改。 其他更改它会要求重新启动模块。
我正在使用JBoss AS 7.1.1.Final 。 在我的web.xml中添加以下代码片段帮助我即时更改jsp文件:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>development</param-name> <param-value>true</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
希望这可以帮助。!!
部署应用程序展开(project.war文件夹),添加到您的web.xml中:
<web-app> <context-param> <param-name>org.jboss.weld.development</param-name> <param-value>true</param-value> </context-param>
每次部署时更新web.xml时间(追加空白行):
set PRJ_HOME=C:\Temp2\MyProject\src\main\webapp set PRJ_CLSS_HOME=%PRJ_HOME%\WEB-INF\classes\com\myProject set JBOSS_HOME= C:\Java\jboss-4.2.3.GA-jdk6\server\default\deploy\MyProject.war set JBOSS_CLSS_HOME= %JBOSS_HOME%\WEB-INF\classes\com\myProject copy %PRJ_CLSS_HOME%\frontend\actions\profile\ProfileAction.class %JBOSS_CLSS_HOME%\frontend\actions\profile\ProfileAction.class copy %PRJ_CLSS_HOME%\frontend\actions\profile\AjaxAction.class %JBOSS_CLSS_HOME%\frontend\actions\profile\AjaxAction.class ECHO.>>%JBOSS_HOME%\WEB-INF\web.xml
使用Ant脚本并进行目标部署。
部署目标应该:
- 停止JBoss
- 将ear或war复制到deploy目录
- 启动JBoss
==>没有caching+在testing期间的后续部署之后也没有内存不足问题。