gpt4 book ai didi

java - "org.omg.CORBA.BAD_OPERATION: Cannot extract ulonglong"与 JacORB 客户端超时策略

转载 作者:行者123 更新时间:2023-12-01 12:24:30 25 4
gpt4 key购买 nike

我正在尝试使用 JacORB 和 java 来实现 CORBA 连接的客户端超时策略。以下是我尝试实现的第一个方法

long timeout = 10000000L;
org.omg.CORBA.Any relativeRoundtripTimeoutValue = orb.create_any();
TimeTHelper.insert(relativeRoundtripTimeoutValue,timeout);
Policy[] policies = new Policy[1];
try {
policies[0] = orb.create_policy(org.omg.Messaging.RELATIVE_RT_TIMEOUT_POLICY_TYPE.value,
relativeRoundtripTimeoutValue);
<client_stub>._set_policy_override(policies, SetOverrideType.ADD_OVERRIDE);
} catch (PolicyError e) {
e.printStackTrace();
}

此实现会抛出

Caused by: org.omg.CORBA.BAD_OPERATION: Cannot extract ulonglong  vmcid: 0x0  minor code: 0     completed: No
at org.jacorb.orb.Any.checkExtract(Any.java:118)
at org.jacorb.orb.Any.extract_ulonglong(Any.java:467)
at org.jacorb.orb.policies.RelativeRoundtripTimeoutPolicy.<init>(RelativeRoundtripTimeoutPolicy.java:58)
at org.jacorb.orb.ORB.create_policy(ORB.java:774)

但是,当我将 RELATIVE_RT_TIMEOUT_POLICY_TYPE 更改为 REPLY_END_TIME_POLICY_TYPE 时,它会正常运行,但不会产生预期结果,因为客户端等待而没有超时。

我也尝试了以下方法,它运行时没有异常,但客户端再次无限期地等待而没有超时。

Policy retquestTimeoutPolicy = new org.jacorb.orb.policies.RelativeRoundtripTimeoutPolicy (1000 * 10000);
applicationDataAccess._set_policy_override(new Policy[]{retquestTimeoutPolicy}, SetOverrideType.ADD_OVERRIDE);

我可能在这里遗漏了一些小东西,但我是 corba 流的新手。所以任何帮助都会很棒。

最佳答案

要设置此策略,您应该使用 PolicyManager 对象的 set_policy_overrides 方法:

  long timeout = 10000000L;
PolicyManager opm = (PolicyManager) orb.resolve_initial_references("ORBPolicyManager");
Any relativeRoundtripTimeoutValue = orb.create_any();
TimeTHelper.insert(relativeRoundtripTimeoutValue, timeout);
Policy[] policies = new Policy[1];
policies[0] = orb.create_policy(RELATIVE_RT_TIMEOUT_POLICY_TYPE.value,
relativeRoundtripTimeoutValue);
opm.set_policy_overrides(policies, SetOverrideType.ADD_OVERRIDE);

OpenORB 源代码 https://sourceforge.net/projects/openorb/files/OpenORB/1.4.0/OpenORB-1.4.0-src.zip/download 中有一个示例:\OpenORB\src\examples\org\openorb\orb\examples\messaging\Client.java

关于java - "org.omg.CORBA.BAD_OPERATION: Cannot extract ulonglong"与 JacORB 客户端超时策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com