Я использовал ниже, и он начал работать

аюсь подключиться к веб-службе, используя WS-Security UsernameToken spec 1.0, используя apache cxf 2.4.0.

Я скопировал приведенный ниже код из документов CXF, но получаю: org.apache.cxf.ws.policy.PolicyException: имя пользователя недоступно

    MyService_Service ss = new MyService_Service(wsdlURL, SERVICE_NAME);
    MyService port = ss.getBasicHttpBindingMyService ();  


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

    Map<String,Object> outProps = new HashMap<String,Object>();
    outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
    outProps.put(WSHandlerConstants.USER, "USERNAME");
    outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
    outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, 
    ClientPasswordHandler.class.getName());

    WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
    cxfEndpoint.getOutInterceptors().add(wssOut);

Я также реализовал класс ClientPasswordHandler, опять же из документации, но кажется, что имя пользователя никогда не отправляется (в соответствии с ошибкой). Вот обработчик пароля:

public class ClientPasswordHandler implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
    WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
    pc.setPassword("Password");     
    }
}

Есть ли какой-нибудь способ узнать, применяется ли WSS4Jinterceptor и отправлено ли имя пользователя Token?

Ответы на вопрос(3)

Ваш ответ на вопрос