我最近将opensaml依赖项从2.5.3升级到了2.6.1,并将xmlutil从
1.3.0至1.4.1。
它编译没有任何错误,但是在运行应用程序时出现以下异常:

java.lang.NullPointerException
org.opensaml.xml.io.AbstractXMLObjectMarshaller.marshall(AbstractXMLObjectMarshaller.java:84)


呼叫代码:

final MarshallerFactory marshallerFac = SAMLUtil.getMarshallerFactory();
     final org.opensaml.xml.io.Marshaller authnStatementMarshaller = marshallerFac.getMarshaller(assertion);

     Element assertionElement = null;

     try {
        assertionElement = authnStatementMarshaller.marshall(assertion);
        try {
           // Sign assertion and query signature
           Signer.signObject(signature);
        }
        catch (final SignatureException e) {
           LOGGER.error("Fout opgetreden bij ondertekenen Assertion", e);
        }
     }

最佳答案

我注意到,如果您不初始化(“引导程序”)SAML配置,则在尝试构造SAML时会收到NullPointerException(我可能会无益地添加)。

import org.opensaml.DefaultBootstrap;
import org.opensaml.xml.ConfigurationException;

try {
    DefaultBootstrap.bootstrap();
}
catch (ConfigurationException ce) {
}


上面只是一段代码,用以说明我在说什么。您是否忘记了引导配置?在您执行任何操作之前,必须先完成此操作。

关于java - SAML编码(marshal)opensaml和Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27707071/

10-11 01:07