在CXF中添加外发soap消息的凭据?

时间:2014-06-11 13:22:37

标签: java web-services soap cxf

我正在使用CXF / JAXB从wsdl自动生成java类。 所有生成的请求extend BaseRequest,可以获取soap auth所需的用户凭据:

CityRequest req = new CityRequest();
req.setUsername("admin");
req.setPassword("test");
req.setPostalCode("1234");

new WsService().getCityPort().getTown(req);

现在我想以某种方式“拦截”传出的请求,并自动添加所需的凭据。所以在我的客户端实现中,我不必关心设置身份验证的东西。可以使用CXF吗?

然后凭据不是header,而是正常的xml字段。

1 个答案:

答案 0 :(得分:1)

只要在对象在MARSHAL阶段编组之前执行,就可以使用CXF拦截器。你应该能够在那之前选择任何阶段。请参阅CXF Interceptors文档中的完整列表。

在Interceptor中,您可以使用以下代码找到您的传出对象:

@Override
public void handleMessage(Message message) throws Fault {

    List mcl = message.getContent(List.class);
    if (mcl != null) {
        for (Object o : mcl) {
            if (o instanceof BaseRequest) {
                BaseRequest baseRequest = (BaseRequest) o;
            }
        }
    }

}