Ошибка Opensaml при получении правильного демаршаллера

Я запускаю этот код на opensaml2.6

Element metadataRoot = document.getDocumentElement();

// Unmarshall
UnmarshallerFactory unmarshallerFactory = Configuration.getUnmarshallerFactory();
Unmarshaller unmarshaller = unmarshallerFactory.getUnmarshaller(metadataRoot);
if (unmarshaller == null) {
    System.out.println("Error receiving unmarshaller for this document.");
    return;
}

Для документа

<?xml version="1.0" encoding="UTF-8"?><saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">

Unmarshaller возвращает null. Можете ли вы помочь мне понять, каковы критерии поиска правильного Unmarshaller и как это работает в opensaml?


person Pegerto    schedule 31.07.2014    source источник
comment
Я обнаружил, что нет регистра unmarshallers, так как в библиотеке нет инициализации: Важный фрагмент кода: // Инициализировать библиотеку DefaultBootstrap.bootstrap();   -  person Pegerto    schedule 01.08.2014


Ответы (2)


Я обнаружил, что нет регистра unmarshallers, так как в библиотеке нет инициализации:

Важный фрагмент кода:

// Initialize the library
DefaultBootstrap.bootstrap();
person Pegerto    schedule 01.08.2014
comment
Спасибо, Пегерто, ты спас мой день. - person sampathpremarathna; 16.03.2016
comment
Я использую OpenSaml3, где это будет: InitializationService.initialize(), но я все равно получаю null от MarshallerFactory. Кто-нибудь может помочь? - person Gobliins; 10.01.2017
comment
@Гоблины, мне тоже не повезло. Я использовал этот код для инициализации в OpenSAML3: github.com/apereo/cas/blob/master/support/ Затем unmarshallerFactory.getUnmarshallers() возвращает 9 немаршаллеров (например, целое число, boolean, string), но ничего для тех, кто мне небезразличен. - person dieresys; 10.04.2017

В OpenSAML3 вы должны сначала включить артефакт opensaml-saml-impl в свои зависимости, так как там реализованы все маршаллеры и демаршаллеры.

Затем, как указали @Goblins и @Pegerto, вам нужно позвонить InitializationService.initialize(). Я нашел эту ссылку полезной для правильной инициализации при использовании внедрения зависимостей https://github.com/apereo/cas/blob/master/support/cas-server-support-saml-core-api/src/main/java/org/apereo/cas/support/saml/OpenSamlConfigBean.java

person dieresys    schedule 10.04.2017