【发布时间】:2014-11-05 20:20:59
【问题描述】:
好吧,我有一个带有 web 方法的 wsdl,我使用以下命令通过 axis2java 创建存根:
wsdl2java -uri https://path/to/service?wsdl -p com.my.java.package
它会生成所有必需的存根,但我很难实际使用它们。我有两个 HTTPS 的 URL,但是其中一个具有带壁垒的消息加密。我已经能够让更困难的消息加密 URL 正常工作。
我按如下方式初始化我的加密存根:
ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repository", null);
NetWS_0Stub stub = new NetWS_0Stub(ctx, aEndPoint);
ServiceClient client = stub._getServiceClient();
Options options = new Options();
options.setTo(new EndpointReference(aEndPoint));
options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, this.loadPolicy("repository/policy/HTTPS_Policy.xml"));
client.setOptions(options);
client.engageModule("rampart");
return stub;
对于我的非加密(仅限 HTTPS),我尝试了上述存根初始化方法以及以下方法:
ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repository", null);
NetWS_0Stub stub = new NetWS_0Stub(ctx, aEndPoint);
ServiceClient client = stub._getServiceClient();
Options options = new Options();
options.setTo(new EndpointReference(aEndPoint));
client.setOptions(options);
普通的 HTTPS 存根不起作用。充其量我得到一个肥皂头丢失异常。但是,我可以通过 SOAPui 使用这些 Web 方法。所以我知道 URL/WSDL/web 方法运行良好。我更熟悉 wsimport 而不是axis2 ....axis2 似乎更难做这么简单的事情。
我应该如何设置存根来调用非消息加密的 Web 服务?为什么使用axis2如此痛苦?这只是我不理解的问题。如果 SOAPui 可以立即生成 Web 请求/响应,那么我觉得 axis2 工具应该能够做同样的事情,特别是因为 Web 方法是通过 glassfish 中的 axis2 创建和访问的。我没有使用任何密钥库/信任库设置 SOAPui,当我给它 wsdl 时它就可以工作。
如果有人需要特定的代码示例,请告诉我,我不确定哪些信息甚至可以帮助某人帮助我。
【问题讨论】:
标签: java web-services web axis2 wsdl2java