【问题标题】:How to add a JVM option to glassfish 4.0?如何向 glassfish 4.0 添加 JVM 选项?
【发布时间】:2014-07-11 13:42:45
【问题描述】:

glassfish 管理指南指出应该使用asadmin create-jvm-options -Dkey=value:-Dkey=valuehttps://glassfish.java.net/docs/4.0/administration-guide.pdf,S. 120)添加 JVM 选项。当然,这些示例不包括添加包含: 的选项和以-XX 而不是-D 开头的选项的有趣且具有教学意义的重要案例。不过,它被解释为用\ 转义:。调用asadmin create-jvm-options -XX\:MaxPermSize=1024m:-Xmx4096 会添加两个选项而不删除\,这(正确地)防止了(错误的)选项被识别。在这里进行的正确方法是什么?

如何覆盖现有选项?如果使用相同的值指定选项名称,asadmin create-jvm-options 抱怨该选项已经存在,指定另一个值,值都存在(-> 使用哪一个?)。我真的不需要解析和评估asadmin list-jvm-options 的输出,不是吗?

如何确定是否添加了选项,即是否必须重新启动域?同样的问题:我真的不需要在添加选项之前和之后解析和评估asadmin list-jvm-options 的输出,不是吗?

【问题讨论】:

    标签: glassfish-4 asadmin


    【解决方案1】:

    这里的正确方法是什么?

    你必须用asadmin delete-jvm-options删除JVM选项:

    asadmin delete-jvm-options '-XX\:MaxPermSize=192m'
    

    然后使用新值再次添加选项:

    asadmin create-jvm-options '-XX\:MaxPermSize=1024m'
    

    更改 JVM 选项后始终需要重新启动服务器。

    如何覆盖现有选项?如果指定了选项名称 具有相同的值,asadmin create-jvm-options 抱怨说 选项已经存在,指定另一个值,值 两者都存在(-> 使用哪一个?)。我真的不需要解析 并评估asadmin list-jvm-options 的输出,对吗?

    如果您按照上述说明进行操作,我想这个问题已经过时了。

    如何确定选项是否已添加,即 我是否必须重新启动域?同样的问题:我没有 真的必须在添加选项之前和之后解析和评估asadmin list-jvm-options 的输出,不是吗?

    asadmin 命令告诉您它是否已成功添加或删除选项。如果您尝试删除不存在的选项,asadmin 会告诉您没有删除任何选项,因为它不存在。

    更新:

    为了删除选项,我必须知道键和值(我该怎么做 如果选项集是 -XX:MaxPermSize=193m -> 它不会被删除, 但是 asadmin 会产生第二个选项(顺序不清楚), 因此我必须解析 asadmin 的输出 列表-jvm-options)。

    如果您之前没有设置它,为什么它应该具有值193m(然后您可能知道它)?如果它有这个值,是的,你是对的,你必须解析list-jvm-options 的输出才能找到它。您也可以编写一个脚本,尝试通过增加参数(192m193m194m 等)来删除该值,但这需要很长时间才能完成。

    asadmin 如何告诉我这个(返回码、输出……)?

    它输出这样的人类可读消息:

    deleted 1 option(s)
    Command delete-jvm-options executed successfully.
    

    created 1 option(s)
    Command create-jvm-options executed successfully.
    

    尝试自己查看不同的消息。

    我指的是 GF 4.0,因此指向 3.0.1 管理指南的链接是 过时了。

    他们不是,GlassFish 管理和asadmin 在 GlassFish 3 和 4 中的比例为 99.9%。

    逃逸问题呢?

    我无法重现,也许一次只设置一个值或将参数和值括在引号中会有所帮助。

    另请参阅:

    【讨论】:

    • 为了删除选项,我必须知道键和值(如果选项集是 -XX\:MaxPermSize=193m 我该怎么办 -> 它不会被删除,但 asadmin 会产生第二个选项(顺序不清楚),因此我必须解析asadmin list-jvm-options的输出)。第二点:如何asadmin 告诉我这个(返回码、输出……)?我指的是 GF 4.0,因此指向 3.0.1 管理指南的链接已经过时(我什至在我的问题中引用了正确的版本......)。逃逸问题呢?
    • 谢谢你:)!结果是我预期的最差的。 (1) 指定不同的-Xmx 选项有什么意义;应该根据键进行覆盖并驱逐所有值! (2) 未指定的返回码几乎是开发人员的一种虐待狂(我希望输入超出管理员指南的复杂技术规范)。我认为我的问题和您的回答表明此管理指南非常不可用/无用。
    • 如果使用单引号,不要转义内联冒号,否则创建会失败。因此,对于多个选项,您可以这样做:asadmin create-jvm-options '-XX:+UnlockCommercialFeatures':'-XX:+FlightRecorder'
    【解决方案2】:

    [glassfish@6b99de007186 /]$ asadmin delete-jvm-options -client:'-XX:MaxPermSize=192m':-Xmx512m 删除了 3 个选项 命令 delete-jvm-options 执行成功。

    [glassfish@6b99de007186 /]$ asadmin create-jvm-options -server:'-XX:MaxPermSize=256m':-Xmx1024m 创建了 3 个选项 命令 create-jvm-options 执行成功。

    【讨论】:

      【解决方案3】:

      命令行的其他替代方法是将 JVM 属性手动添加到 Glassfish domain.xml 文件中。

      您可以在以下位置找到该文件: pat-to-glassgish\Glassfish\glassfish\domains\yourdomain\config

      在那里你会看到 jvm-options 的部分,像这样:

      <jvm-options>-Dhttps.protocols=TLSv1.2</jvm-options>
      

      你可以在那里添加你的。

      希望对你有帮助:-)

      【讨论】:

        猜你喜欢
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 2022-01-24
        • 1970-01-01
        • 2015-04-10
        • 1970-01-01
        相关资源
        最近更新 更多