我正在尝试使用 WSS4J 将密码摘要 WS-Security 位添加到来自我的客户端的 Web 服务调用。我使用 Axis 的 WSDL4J 从 WSDL 生成客户端类,并按照说明使用 WSS4J 将 WS-Security 的“Password Digest”标头添加到 SOAP 消息,但返回错误消息“处理标头时发现错误”。添加调试消息,看起来我的 CallbackHandler 并没有受到打击。我做错了什么吗?或者我是否遗漏了一些在 WSS4J 文档中无法解释的设置?
class CSProvider {
    public CS get(CSService csService, URL url, String username)
            throws ServiceException {
        CS csPort = csService.getCSPort(url);
        ((Stub) csPort)._setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
        ((Stub) csPort)._setProperty(WSHandlerConstants.USER, username);
        ((Stub) csPort)._setProperty(UsernameToken.PASSWORD_TYPE, WSConstants.PW_DIGEST);
        ((Stub) csPort)._setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, "com.example.namespace.to.PasswordCallbackHandler");
        return csPort;   
    }
}
public class PasswordCallbackHandler implements CallbackHandler {
    @Override
    public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
        for (Callback callback : callbacks) {
            if (callback instanceof WSPasswordCallback) {
                ((WSPasswordCallback) callback).setPassword(PasswordStore.getPassword());
            } else {
                throw new UnsupportedCallbackException(callback);
            }
        }
    }
}