我正在尝试在 Ballerina 服务器中以编程方式设置 JVM 参数。我能够在终端中设置环境变量,但无法以编程方式这样做。
我正在尝试使用 Ballerina 示例服务器设置
jdk.tls.namedGroups
环境变量,但命名组在 TLS 握手中没有更改。
import ballerina/http;
import ballerina/os;
os:Error? err = os:setEnv("_JAVA_OPTIONS", "-Djdk.tls.namedGroups=secp256r1,secp384r1,secp521r1");
listener http:Listener securedEP = new (9090,
secureSocket = {
key: {
certFile: "./serverpubliccert.crt",
keyFile: "./serverpvtkey.key"
},
protocol: {
name: "TLS",
versions: ["TLSv1.3"]
}
}
);
service / on securedEP {
resource function get greeting(string name) returns string|error {
// Send a response back to the caller.
if name is "" {
return error("name should not be empty!");
}
return "Hello, " + name;
}
}
当我尝试在终端中设置环境变量时,它起作用了。
export _JAVA_OPTIONS="-Djdk.tls.namedGroups=secp256r1,secp384r1,secp521r1"
AFAIK,_JAVA_OPTIONS env 变量由 JVM 本身选取。因此它需要在 JVM 启动之前就存在。当你在芭蕾舞程序中设置它时,jvm已经启动了,我猜Java的行为也是一样的。
使用终端为您的用例设置 _JAVA_OPTIONS 环境变量是否有任何问题?