获取 CXF 客户端的端点以实现 ws-security

2023-12-31

我正在写一个 CXF 客户端。现在我必须集成安全性。 我从 wsdl2java 生成这些类:MyService, MyServiceProxy, MyServiceHttpBindingStub, MyServiceHttpService and MyServiceHttpServiceLocator.

到目前为止我一直在使用MyServiceProxy用于向服务发出请求的类。按照手册,我必须以某种方式获得Endpoint所以我可以这样做:

endpoint.getOutInterceptors().add(wssOut);

在手册中,它是通过使用来解释的ClientProxy像这样的辅助类:

Client client = ClientProxy.getClient(port);
Endpoint endpoint = client.getEndpoint();

但如何正确创建port从我的课程中?当我做:

MyService port = (new MyServiceHttpServiceLocator()).getMyServiceHttpPort();

并将该端口放入 ClientProxy 方法,我收到运行时错误:

 java.lang.IllegalArgumentException: not a proxy instance

那么,我怎样才能获得端口以便我能够将其传递给ClientProxy.getClient()?


您是否尝试过创建服务实例,然后从该实例检索端口?下面的 Apache CXF 链接中标有“日志消息 - 用于编程客户端日志记录”的部分中有一个如何以另一种方式获取端口的示例。请注意,根据您使用的 CXF 版本,步骤可能会有所不同。另一个建议是使用配置文件(如果可能的话)。请参阅示例目录中的安全示例。调试和日志记录 http://cxf.apache.org/docs/debugging-and-logging.html

 MyService ws = new MyService();
    MyPortType port = ws.getPort();

    Client client = ClientProxy.getClient(port);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 CXF 客户端的端点以实现 ws-security 的相关文章

随机推荐