我最近将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/