我正在写一个 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(使用前将#替换为@)