我在更改 Axis 1.4 生成的 Web 服务客户端代码使用的标准选项时遇到问题。我们使用了使用旧 RPC/Encoded 样式的合作伙伴的某个 Web 服务,这基本上意味着我们无法使用 Axis 2,但仅限于 Axis 1.4。
服务客户端正在通过我们的代理从远程服务器检索数据,该代理实际上运行得非常好。
我们的应用程序被部署为一个 servlet。检索到的外部 Web 服务响应被插入到我们提供给内部系统/CMS 的 (XML) 文档中。但是,如果外部服务没有响应——这还没有发生,但可能随时发生——我们希望很好地降级并在合理的时间内返回我们生成的 XML 文档,而没有计算出的 Web 服务信息。检索到的数据是可选的(如果缺少此特定计算,则根本不是大问题)。
所以我尝试更改超时设置。我确实应用/使用了我在轴文档中可以找到的所有方法和键,以通过搜索网络来更改连接和套接字超时。这些似乎都不会影响连接超时。
谁能给我建议如何根据版本 1.4 更改轴存根/服务/端口的设置?
这是我尝试的几种配置的示例:
MyService service = new MyServiceLocator();
MyServicePort port = null;
try {
port = service.getMyServicePort();
javax.xml.rpc.Stub stub = (javax.xml.rpc.Stub) port;
stub._setProperty("axis.connection.timeout", 10);
stub._setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);
AxisProperties.setProperty("axis.connection.timeout", "10");
AxisProperties.setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, "10");
AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, "10");
AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, "10");
logger.error(AxisProperties.getProperties());
service = new MyClimateServiceLocator();
port = service.getMyServicePort();
}
我在生成服务之前分配了属性更改,之后,我在初始化期间设置了属性,我尝试了我发现的其他几个超时键,......我想我对此很生气并开始忘记我已经尝试过的东西!
我究竟做错了什么?我的意思是必须有一个选择,不是吗?
如果我没有找到合适的解决方案,我会考虑在我们的代码中设置一个带有超时的同步线程,这实际上感觉很尴尬而且有点愚蠢。你还能想象别的吗?
提前致谢
延斯
axis1.4 java client soap wsdl2java rpc/encoded xml servlet 生成 alter change setup stub timeout connection socket keys 方法