Piszę program który jest klientem usługi WebService. W programie każdy użytkownik będzie miał własny identyfikator do podpisywania koperty (ENVELOPE). Więc zamiast statycznej autentykacji uzyłem dynamicznej:

<?xml version="1.0" encoding="utf-8"?><wsdl:...........</wsdl:service>
    <wsp1:Policy wsu:Id="UslugaObslugiPakietowPolicy">
        <wsp1:ExactlyOne>
            <wsp1:All>
                <sc:CallbackHandlerConfiguration wspp:visibility="private">
                    <sc:CallbackHandler name="usernameHandler" classname="pl.callbackhadler.UsernameAndPasswordCallbackHandler"/>
                    <sc:CallbackHandler name="passwordHandler" classname="pl.callbackhadler.UsernameAndPasswordCallbackHandler"/>
                </sc:CallbackHandlerConfiguration>
            </wsp1:All>
        </wsp1:ExactlyOne>
    </wsp1:Policy>
</wsdl:definitions>

a klasa CallbakHadlera jest następująca:

public class UsernameAndPasswordCallbackHandler implements CallbackHandler {

    @Override
    public void handle(Callback[] callbacks)
            throws IOException, UnsupportedCallbackException {

        for (int i = 0; i < callbacks.length; i++) {
            if (callbacks[i] instanceof TextOutputCallback) {

                // display the message according to the specified type
                TextOutputCallback toc = (TextOutputCallback) callbacks[i];
                switch (toc.getMessageType()) {
                    case TextOutputCallback.INFORMATION:
                        System.out.println(toc.getMessage());
                        break;
                    case TextOutputCallback.ERROR:
                        System.out.println("ERROR: " + toc.getMessage());
                        break;
                    case TextOutputCallback.WARNING:
                        System.out.println("WARNING: " + toc.getMessage());
                        break;
                    default:
                        throw new IOException("Unsupported message type: "
                                + toc.getMessageType());
                }

            } else if (callbacks[i] instanceof NameCallback) {

                NameCallback nc = (NameCallback) callbacks[i];
                nc.setName("user");

            } else if (callbacks[i] instanceof PasswordCallback) {

                PasswordCallback pc = (PasswordCallback) callbacks[i];
                pc.setPassword("password".toCharArray());

            } else {
                throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
            }
        }
    }

}

Pytanie brzmi jak teraz do pól user i password pobrać dane zalogowanego użytkownika do aplikacji webowej np przechowywanej w zmiennych sesji?