如何在Axis2客户端中正确使用WS-Addressing? [英] How do I use WS-Addressing properly in an Axis2 client?

查看:333
本文介绍了如何在Axis2客户端中正确使用WS-Addressing?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

全部, 我正在尝试编写一个Junit测试,该测试在Axis2.1.5中调用Web服务客户端,而我对如何准确地设置它以使用WS-Addressing感到困惑.

All, I'm attempting to write a Junit test that calls a Web Service client in Axis2.1.5, and I've gotten confused about how to exactly to set it up to use WS-Addressing.

我已经使用wsdl2java生成了一个客户端存根,并且正在使用axis2二进制发行版中的axis2.xml和模块存储库.

I've generated a client stub using wsdl2java, and I'm using the axis2.xml and modules repository from the axis2 binary distribution.

我知道我需要使用WS-Addressing的MemberSubmission版本,并且认为我已经正确设置了(使用Options),但是标题似乎没有得到正确生成. (我之所以说似乎",是因为我也不知道SOAPMonitor模块如何工作-我也欢迎任何提示!).

I know I need to use the MemberSubmission version of the WS-Addressing, and I think I've got that set up correctly (using Options), but the headers don't seem to get generated correctly. (I say 'seem' because I can't figure out how to the SOAPMonitor module working either - I'd welcome any tips on that too!).

但是,我的主要困惑是围绕接合"寻址模块所需的确切时间.用一个对寻址模块有引用的axis2.xml文件设置我的ConfigurationContext是否足够?像这样? :

My main confusion, though, is around what exactly it takes to 'engage' the Addressing module. Should it be enough to set up my ConfigurationContext with an axis2.xml file that has a reference to the addressing module? Like this? :

//standard out of the box axis2 configs
 ConfigurationContext myConfigContext = ConfigurationContextFactory
   .createConfigurationContextFromFileSystem("C:/devapps/axis2-1.5.1/repository","C:/devapps/axis2-1.5.1/conf/axis2.xml");

  Options options = new Options();
  EndpointReference targetEPR = new EndpointReference(
    "https://host:port/service.asmx");

  options.setTo(targetEPR);

                //I believe this is what I'm supposed to do to specify the 
  //MemberSubmission version of WS-Addressing
  options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
    AddressingConstants.Submission.WSA_NAMESPACE);
  //No idea of this is needed or not.
  options.setProperty(AddressingConstants.INCLUDE_OPTIONAL_HEADERS,
    Boolean.TRUE);
  options.activate(myConfigContext);
  options.setAction("someAction");

  CaseDetailsServiceStub stub = new CaseDetailsServiceStub(
    "https://host:port/service.asmx");
  stub._getServiceClient().setOptions(options);

  //I'm calling this from a Junit test
  assertNotNull(stub.someAction(someParam));

在如上所述设置我的选项的情况下,在日志文件中看到模块是从axis2.xml加载的:

With my options set up like above, is see in the log file that the modules are getting loaded from axis2.xml:

[INFO] Deploying module: addressing-1.5.1 - file:/C:/devapps/axis2-1.5.1/repository/modules/addressing-1.5.1.mar

但是我认为我没有得到任何地址标头.此时我从服务器返回的错误是:

But I don't think I'm getting any addressing headers. The error I get back from the server at this point says:

标题 http://schemas.xmlsoap.org/ws/2004/08/addressing:Action 最终收件人是必需的,但 消息中不存在.

Header http://schemas.xmlsoap.org/ws/2004/08/addressing:Action for ultimate recipient is required but not present in the message.

因此,我也看到一些文档引用了参与"模块.但是,当我尝试将此行添加到代码中并将addressing-1.5.1.mar添加到我的类路径中时,

So, I've also seen some documents reference 'engaging' modules. When I try to add this line to my code and add the addressing-1.5.1.mar to my classpath, though:

stub._getServiceClient().engageModule("addressing");

我看到一条错误消息:

无法使用模块:寻址 org.apache.axis2.AxisFault:无法启用模块:soapmonitor 在org.apache.axis2.client.ServiceClient.engageModule(ServiceClient.java:358)

Unable to engage module : addressing org.apache.axis2.AxisFault: Unable to engage module : soapmonitor at org.apache.axis2.client.ServiceClient.engageModule(ServiceClient.java:358)

尽管如此,日志中没有其他信息或堆栈跟踪,所以,我很困惑.

No other info or stack trace in the logs beyond, that, though, so I'm confused.

关于我在做什么错的任何想法吗?

Any ideas on what I'm doing wrong?

推荐答案

将addressign.mar和sopamoniter.mar放入项目的lib或类路径中. 这个对我有用 从axis2套件中找到损坏的痕迹

put addressign.mar and sopamoniter.mar into lib or classpath of project . it works for me find the mar from axis2 kit

这篇关于如何在Axis2客户端中正确使用WS-Addressing?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆