【问题标题】:Using Spring loaded in spring mvc framework使用spring mvc框架中加载的Spring
【发布时间】:2016-04-29 17:14:22
【问题描述】:

我在使用带有 spring mvc 的 spring 加载时遇到了一些问题。我在服务器上添加了弹簧加载的 jar 作为 java 代理。

现在,当我添加新方法时,例如在我的案例中,我添加了一个新方法 testHomes(),它为我提供了这个对话框。

下面是我的配置

我还检查了自动构建 我正在使用弹簧框架 4.2.5.RELEASE。

我从以下链接检查 SpringLoaded

与“热代码替换”不同,它只允许在 JVM 运行后进行简单更改(例如更改方法主体),Spring Loaded 允许您添加/修改/删除方法/字段/构造函数。类型/方法/字段/构造函数上的注解也可以修改,并且可以在枚举类型中添加/删除/更改值。

有什么办法可以让我完成这项工作吗?

问候,

【问题讨论】:

  • 你的配置很完美。但它们是加载 Spring 的一些内部问题。所以它不能在没有重新部署的情况下加载新方法。尝试更改方法内的一些行。我认为,它会工作得很好。
  • 是的,当我更改现有方法的主体时,它很好。快速浏览一下 spring 加载的描述引起了我的注意,它说“与'热代码替换'不同,它只允许在 JVM 运行时进行简单的更改(例如更改方法主体),Spring Loaded 允许您添加/修改/删除方法/fields/constructors。还可以修改类型/方法/字段/构造函数上的注释,并且可以添加/删除/更改枚举类型中的值。”。
  • 我在他们的文档中看到您需要将 -noverify 参数传递给 JVM,但我在您的 JVM 配置中没有看到。它似乎不是可选的。
  • 尝试添加 -Djavaagent:springloaded-1.2.5.RELEASE.jar -noverify 但还是一样
  • 弹出窗口来自默认代码替换而不是来自 Spring Loaded。所以看起来好像你的 Spring Loaded,不管配置是不工作还是默认的 Hot Code Replacement 仍然处于活动状态,在 Spirng Loaded 可以完成它的工作之前就开始了。

标签: java spring spring-mvc spring-loaded


【解决方案1】:

什么是热代码替换?:

热代码替换 (HCR) 是一种调试技术,Eclipse Java 调试器通过该技术将新的类文件通过调试通道传输到另一个 JVM。在 Eclipse 开发的情况下,这也适用于运行运行时工作台的 VM。这个想法是,您可以在给定的运行时工作台上启动调试会话并在开发工作台中更改 Java 文件,调试器将在接收 VM 运行时替换其代码。不需要重新启动,因此提到了“热”。

何时生效:

HCR 仅在类签名不变时起作用;例如,您不能删除或向现有类添加字段。但是,HCR 可用于更改方法的主体。 HCR 仅在 1.4.1 VM 及更高版本或使用任何版本的 IBM J9 VM 上可靠地实现。 J9 在 IBM 产品中可用,例如 Websphere Studio Device Developer。

问题排查:

  1. 检查您是否在受支持的 VM 上运行应用程序(请注意,运行 Eclipse 的 JVM 可能与运行 Java 应用程序的 JVM 不同)。

  2. 检查自动构建是否开启。确保选中“项目> 自动构建”。

  3. 检查在 Eclipse Tomcat 服务器上选择的以下选项。

参考资料:wiki.eclipse

【讨论】:

【解决方案2】:

javaagent 是 JVM 选项。所以它应该在没有D 前缀的情况下传递。即你需要

-javaagent:springloaded-1.2.5.RELEASE.jar -noverify

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2015-11-26
    • 2011-10-27
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多