WSMappingCallbackHandlerFactory.getInstance () является нулевым на сервере websphere - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь прочитать список учетных данных J2C, установленных на websphere 7.0, приложение развернуто на websphere и выполняет следующий тестовый код:

    Map map = new HashMap();
    map.put( com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS, "NODENode01/DBANAME" );
    CallbackHandler callbackHandler;
    try {            
        callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler( map, null );
        LoginContext loginContext = new LoginContext( "DefaultPrincipalMapping", callbackHandler );
        loginContext.login();
        Subject subject = loginContext.getSubject();
        Set credentials = subject.getPrivateCredentials();

        PasswordCredential passwordCredential = (PasswordCredential) credentials.iterator().next();

        String userName = passwordCredential.getUserName();
        String password = new String( passwordCredential.getPassword() );
        System.out.println( "INFO: username e password:" + userName + "  - " + password );

    } catch ( NotImplementedException e1 ) {
        // TODO Auto-generated catch block           
    } catch ( LoginException e ) {
        // TODO Auto-generated catch block

    }

Я не могу пройти мимоWSMappingCallbackHandlerFactory.getInstance (), так как я получаю нулевой указатель на объект.

Я попробовал различные конфигурации на веб-сфере для моего приложения, и я заметил, что если оставить значение по умолчанию в разделе «Загрузка классов и обнаружение обновлений»,то есть «Загрузка классов и обнаружение обновлений-> Порядок загрузчиков классов-> Классы, загружаемые сначала с помощью родительского загрузчика классов», учетные данные получены правильно.

Но я не могу позволить приложению работать с классом по умолчаниюзагрузка конфигурации (это нарушает другие части проекта), поэтому я не знаю, как решить эту проблему.

Любой намек?

Заранее спасибо.

...