Я пытаюсь прочитать список учетных данных 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 (), так как я получаю нулевой указатель на объект.
Я попробовал различные конфигурации на веб-сфере для моего приложения, и я заметил, что если оставить значение по умолчанию в разделе «Загрузка классов и обнаружение обновлений»,то есть «Загрузка классов и обнаружение обновлений-> Порядок загрузчиков классов-> Классы, загружаемые сначала с помощью родительского загрузчика классов», учетные данные получены правильно.
Но я не могу позволить приложению работать с классом по умолчаниюзагрузка конфигурации (это нарушает другие части проекта), поэтому я не знаю, как решить эту проблему.
Любой намек?
Заранее спасибо.