如何为节点管理器启动的受管服务器设置配额的 JVM 参数

how to set JVM arguments with quota for a Managed Server started by Node Manager

我有一个包含多个托管服务器的 WebLogic 域。一切都在分离的主机上运行。托管服务器由节点管理器启动。

根据 Oracle WL 文档,如果托管服务器由节点管理器启动,那么我需要使用 Environments > Servers > MANAGED-SERVER-1 > Server Start > Arguments 添加额外的 JVM 参数。那太好了,工作正常。如果我在这里添加一些东西,那么它就会正确地出现在服务器上。

但现在我需要添加一些包含配额的 -D 参数:

-Dhttps.protocols="TLSv1.2" -Djdk.tls.client.protocols="TLSv1.2"

WL 控制台抱怨配额,不允许我 save/activate 配额设置。

当我使用 WLST 时出现此错误:

javax.management.InvalidAttributeValueException: javax.management.InvalidAttributeValueException: 
Arguments may not contain '"'

此处:

cd('/Servers/' + _managed_server_name + '/ServerStart/' + _managed_server_name)
cmo.setClassPath(_managed_server_classpath)
cmo.setArguments(_managed_server_arguments) <--- here

我的问题是,如果服务器仅由节点管理器启动并且从未使用 start.....sh 脚本,如何向托管服务器添加 -D 参数?

操作系统:Linux

引入 jvm 争论的一种方式是节点管理器和控制台,但它不是唯一的方式。您可以在位于 $DOMAIN_HOME/bin 下的脚本中添加您的 jvm 参数。例如 setDomainEnv.sh 有一个变量 JAVA_OPTIONS 你可以在那里添加你的论点。如果您在 nodemanager.properties 中设置了 StartScriptEnabled=true 和 StartScriptName=startWebLogic.sh ,则当您使用节点管理器启动服务器时,甚至会添加 jvm 选项。另一个提示是,如果您使用 setDomainEnv.sh 脚本来设置您的 jvm 参数,您还可以编写一个 if 语句并检查根据您启动的服务器设置的 $SERVER_NAME,例如编写 if声明仅将特定的 jvm 参数添加到托管服务器或 AdminServer。如果您搜索 setDomainEnv.sh,您将找到有关应如何编写检查服务器名称的 if 语句的示例。 $SERVER_NAME 是您在 weblogic 控制台中看到的服务器的确切名称。

最后,不要使用双引号,只在没有双引号的情况下设置你的论点。 如果你想使用 wlst,你应该像这样设置参数

cmo.setArguments("-Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2") 引号消除了所有争论

虽然这是针对 11g 和 SOA 的,但很多要点都是特定于 WebLogic 的,并且对于 12c 仍然有效。 https://www.ateam-oracle.com/post/where-and-how-to-set-jvm-parameters-in-oracle-soa-11g