【问题标题】:Hot Swap agent Configuration for multi module project多模块项目的热插拔代理配置
【发布时间】:2015-12-02 05:17:33
【问题描述】:


我需要帮助在我的项目中配置热插拔代理以热部署类文件。
在我的项目中,我们的项目设置如下:

WebProject(战争)
|
|_ _ 服务项目(jar)


服务项目在 web 项目中用作 jar 文件。因此,每当我在服务项目中对 java 文件进行更改时,我希望热插拔代理用最新的类文件重新加载/替换其类文件,而无需再次部署整个项目。

我已经为 jdk 1.7.51 hotswap-agent.jar 文件下载了 dcevm(dynamic code evolution vm) 以及完成eclipse配置。每当我在 WebProject 的 .java 和 .properties 文件中进行更改时,它都会自动重新加载它,而无需再次部署应用程序。现在我只想以这样一种方式配置我的热插拔代理,如果我在服务项目中更改用作 Web 项目中的 jar 文件的 java 文件,它应该重新加载该 .class 文件或 .jar 文件。

是否需要在服务项目的资源文件夹中再添加一个 hotswap-agent.properties 文件?目前我已将其添加到 web 项目的资源文件夹中。

非常感谢任何帮助。

【问题讨论】:

    标签: java jvm hotswap jvmti dcevm


    【解决方案1】:

    我已经为多模块项目配置了热插拔代理。在 Web 项目中,我添加了 hotswap-agent.properties 文件。在 hotswap-agent.properties 文件中添加到服务项目目标目录的路径,如下所示

    extraClasspath=D:/Sample/serviceproject/target/classes

    现在它正在从上述目录重新加载文件。

    【讨论】:

    • Tomcat 和多个项目的 HA 真的适合您吗?我有 this issue 和静态类。我准备了一个example project 来复现。你介意检查一下它的配置是否正确吗?
    【解决方案2】:

    配置文件 hotswap-agent.properties 在运行时从类路径根目录(即 webapp 项目的 WEB-INF/classes)加载。如果你有标准的 maven 目录布局,把它放到 src/main/resources 中。

    使用hotswap-agent.properties中描述的extraClasspath属性:

    # Add a directory prior to application classpath (load classes and resources).
    #
    # This may be useful for example in multi module maven project to load class changes from upstream project
    # classes. Set extraClasspath to upstream project compiler output and .class file will have precedence to
    # classes from built JAR file.
    extraClasspath=
    

    maven 布局示例:

    extraClasspath=_PATH_TO_Service_Project_/target/classes

    【讨论】:

    • 感谢您的帮助:)
    • 如果目标 jar 存储在 war 文件之外,这会起作用吗?
    猜你喜欢
    • 2017-10-28
    • 2023-03-12
    • 2022-01-28
    • 2014-04-17
    • 2011-09-03
    • 2014-06-12
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多