Opensaml错误接收正确的unmarshaller

时间:2014-07-31 18:17:30

标签: java nullpointerexception null marshalling 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中的工作原理吗?

2 个答案:

答案 0 :(得分:12)

我发现由于库中没有初始化,因此没有未经编号的注册:

重要的代码:

// Initialize the library
DefaultBootstrap.bootstrap();

答案 1 :(得分:1)

在OpenSAML3中,您必须首先确保在您的依赖项中包含opensaml-saml-impl工件,因为所有marshallers和unmarshallers都在那里实现。

然后,正如@Goblins和@Pegerto指出的那样,你必须打电话给InitializationService.initialize()。我发现这个链接对于在使用依赖注入https://github.com/apereo/cas/blob/master/support/cas-server-support-saml-core/src/main/java/org/apereo/cas/support/saml/OpenSamlConfigBean.java时进行正确的初始化很有用。