立即重新部署 Java EE 应用程序

2024-06-19

我对 Java EE 很陌生,一直在为部署过程的缓慢而苦苦挣扎,并想知道我是否做错了什么。我对 Django 有丰富的经验,其中代码的更改会立即发生,而且似乎热部署 Java EE 应用程序有点令人困惑——有多种东西声称可以热部署(Glassfish、Eclipse manic hotdeploy、Jetty hotdeploy、JRebel 等)。 )。

我的项目是一个 Maven 项目,我使用 Netbeans 进行部署。该站点使用 Spring、JSF 和 Hibernate 框架。

In Netbeans, Deploy on Save, according to the following screenshot seems to be enabled, but clicking/unclicking is not possible since it claims to get the info from my pom.xml (though there is no such field in my pom.xml (only dependencies)). enter image description here

现在,对某些文件的更改似乎立即生效。这些包括: - JSF 文件 - 静态文件

对以下内容的更改需要部署: - 任何 XML 文件 - 任何属性文件,甚至本地化属性文件 - 任何java文件

对这些的更改需要我部署manually重新部署需要半分钟,尽管我目前只有 2-3 个类,基本上是一个用户类和一个授权类。该项目目前只允许登录,尽管如此,编译大约需要几秒钟;并且容器(Glassfish)似乎消耗了大约 600 MB 的 RAM,甚至在几次部署后出现 PermGen 错误,我需要使用任务管理器终止 java 进程。 (我读到这与每次重新部署后垃圾收集器泄漏有关,我什至使用 jhat 生成配置文件,但出现了数千个类的列表,我的类、Spring、Hibernate 类等。)

我也听说过 jrebel,并尝试运行它,但它似乎与我的 Netbeans 版本(7.0)不兼容,即使它似乎可以运行,对任何 java 文件的任何修改仍然需要重新部署。

我可以采取什么措施来解决这些问题,或者在 Java EE 中,每次更改任何 Java 文件后等待大约 1 分钟是正常现象吗?这个问题极大地降低了生产力。

这是部署应用程序时 Glassfish 的输出:http://pastebin.com/7FhZ6AVh http://pastebin.com/7FhZ6AVh


我既没有找到可靠的消息来源,也没有找到官方消息来源,但既然你没有答案,我想指出我发现的两件事。

第一个是this FAQ http://wiki.netbeans.org/FaqCompileOnSave#Using_Compile_on_Save_in_Maven_Projects在 NetBeans 站点上,描述了如何为 Maven 项目打开保存时编译。看来此设置默认情况下处于关闭状态,并且仅在测试时默认处于打开状态。为了方便:

转到项目属性对话框,Compile面板,也可以将其打开以执行主源代码。

第二个是,我必须强调,我不太完全理解这一点,NetBeans 部署 Web 应用程序似乎有两种不同的方式。第一种方式是就地部署,看起来与部署.war手动将文件发送到服务器。第二种是增量部署,如果它类似于增量编译,则意味着当您的应用程序热部署时,您仅部署更改的文件。

当您单击时,就地部署似乎是默认的部署方法Run or Deploy从项目的上下文菜单中。当您的项目已经部署并且您单击Run再次(或使用Run工具栏按钮)。

我想指出,NetBeans 常见问题解答虽然位于 netbeans.org 网站上,但并不是官方出版物。任何人都可以创建常见问题解答,并且该信息可以而且将会在不进行修改的情况下过时。

Edit:经过一番思考,我认为所谓的增量部署并不是一种不同的部署方式,只是第二次部署的时候Run您的应用程序会进行增量部署。

Edit:请注意,上面的说明将您指向Compile面板而不是Run您在屏幕截图中选择的面板。这是我的屏幕截图,显示您需要选择for both application and test execution in the Compile面板下拉菜单,默认值为for test execution only

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

立即重新部署 Java EE 应用程序 的相关文章

随机推荐

  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 如何从Apollo客户端的useQuery获取响应头

    我根本无法找到一种方法来做到这一点 有谁知道这是否支持 谢谢 ApolloClient 发出请求的方法以及使用它们的 React Hooks 充当数据实际获取方式的抽象 它可能来自 HTTP 上的远程服务器 来自缓存 来自直接针对模式执行请
  • Javascript:“new Array(4)”与 Array.apply(null, {length: 4}) 有何不同?

    我想生成一个给定长度的空数组并用一些数字填充它 生成具有四个连续数字元素的数组的一种方法是 var x Array apply null length 4 map function item index return index 但当我看到
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 数字之和 C++

    我应该编写一个程序 要求用户提供正整数值 该程序应该使用循环来获取总和 从 1 到输入数字的所有整数 例如 如果用户输入 50 循环将求出 1 2 3 4 50 但由于某种原因它不起作用 我的 for 循环遇到了麻烦 但这就是我到目前为止所
  • 使用 EditableText 进行 Flutter

    我正在尝试弄清楚如何在 Flutter 中使用 TextEditor 我有 卡片编辑器 基本上我希望能够处理相当于一段文本的内容 new EditableText autofocus true maxLines null backgroun
  • 动态二维数组非连续内存C++

    假设我将二维数组的地址及其二维数组的行和列传递给函数 该函数会将二维数组的地址视为一维数组 例如 int Matrix 如果我执行下面的代码 int arr arr new int row for int i 0 i lt row i ar
  • 如何访问 Scala XML 中的父元素

    The scala xml包表示带有标记树节点的 XML 但是这棵树在 Scala 2 7 中是单向的吗 因为似乎没有办法访问Elem给定的父级Elem 这似乎同样适用于父母Document 例如 在 XOM 中你有getParent an
  • HTTP POST 操作出现错误代码 302

    我有一个 perl 脚本 它将数据发送到我用 php 编写的 Web 服务 这是代码 use LWP UserAgent my ua LWP UserAgent gt new my server endpoint http example
  • 如何使用 jQuery 拖放文本

    我需要创建一个消息模板 如下所示 你好 Stackoverflow Text A 感谢您的支持 Text B 在这种情况下 我需要使用拖放字段来Textarea 我进行了初步研发 寻找一些库来实现我的要求 并发现了这个通过拖放插入文本 ht
  • 无法运行gradlew

    我已经设置了一个build gradle文件与apply plugin java 我尝试使用说明设置 gradle 包装器here http spring io guides gs gradle 但是当我输入时sudo gradlew bu
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 如何使用 jQuery 在弹出窗口中预览输入类型=“文件”中选定的图像? [复制]

    这个问题在这里已经有答案了 在我的代码中 我允许用户上传图像 现在我想在同一个弹出窗口中将所选图像显示为预览 我怎样才能使用 jQuery 做到这一点 以下是我在弹出窗口中使用的输入类型 HTML 代码
  • ntdll!kifastsystemcallret

    我的程序在执行结束时崩溃 甚至看不到堆栈展开信息 我只能看到这个 ntdll kifastsystemcallret 有人能提供一些线索吗 KiFastSystemCallRet 意味着线程处于系统调用中 x86 NT 系统调用调度的一个不
  • chrome 中的 Javascript window.print(),关闭新窗口或选项卡而不是取消打印会使 javascript 在父窗口中被阻止

    在我开发的应用程序中 用户可以从几个不同的位置进行打印 在所有这些情况下 我们都使用打开新窗口 或选项卡 的相同工作流程 将需要打印的任何内容写入新窗口的文档 然后调用 w document ready function w focus w
  • IIS7应用程序请求路由(arr反向代理)与托管模块相结合 - 超时

    我正在尝试构建一个代理 该代理可以为内部站点 隐藏来源 的请求提供服务 但同时检查数据包并异步对其进行后处理 例如 假设所有 SOAP 调用http www foo com http www foo com将会去http 192 168 1
  • 更新到 1.11.0 后,自动完成功能要求您在 iOS 中单击两次

    使用 jQuery 2 1 0 和 jQuery ui 1 11 0 在 iOS 7 iPhone 和 iPad Mini 中测试 适用于 Android 和常规浏览器 问题 我们最近从 jQuery UI 1 10 0 升级到 1 11
  • 如何在Python字符串中替换括号及其中的文本

    我有两个这样的字符串 string1 Today I went to the market to pick up some fruit string2 Today I went to school to learn algebra and
  • python中的StringIO实际用途是什么?

    StringIO到底是用来做什么的 我一直在互联网上寻找一些例子 然而 几乎所有的例子都非常抽象 他们只是展示 如何 使用它 但它们都没有表明 为什么 和 在什么情况下 应该 将使用它 附注不要与 stackoverflow 上的这个问题混
  • 立即重新部署 Java EE 应用程序

    我对 Java EE 很陌生 一直在为部署过程的缓慢而苦苦挣扎 并想知道我是否做错了什么 我对 Django 有丰富的经验 其中代码的更改会立即发生 而且似乎热部署 Java EE 应用程序有点令人困惑 有多种东西声称可以热部署 Glass