SAML сортирует opensaml и java

Недавно я обновил зависимость 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);
        }
     }

person avinash chavan    schedule 30.12.2014    source источник


Ответы (1)


Я заметил, что если вы не инициализируете ("загрузите") конфигурацию SAML, вы получите исключение NullPointerException (довольно бесполезное, я мог бы добавить) при попытке создать SAML.

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

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

Вышеприведенный фрагмент кода иллюстрирует то, о чем я говорю. Возможно, вы забыли загрузить конфигурацию? Это нужно сделать до того, как вы что-то сделаете.

person Mario    schedule 30.12.2014
comment
это сработало. Но не могли бы вы сказать мне, что такое DefaultBootstrap.bootstrap(); точно делает? и было ли это введено после версии 2.5.3 opensaml? или 1.3.0 xmltooling? Спасибо. - person avinash chavan; 31.12.2014
comment
Я, честно говоря, не знаю подробностей того, что он делает. Думаю, нам нужно изучить исходные файлы OpenSAML. Я никогда не использовал SAML до сентября; все, что я знаю, это то, что где-то по пути я узнал, что вы должны вызывать метод. Что меня беспокоит, так это то, что NullPointerException является отговоркой API. Там действительно должна быть более описательная ошибка. Разве это убило бы их, если бы они создали SAMLConfigurationException и бросили его куда-нибудь по линиям? В любом случае, рад, что помог! - person Mario; 01.01.2015
comment
Исходный код класса DefaultBootstrap можно найти по указанному ниже URL-адресу. Это может дать подсказку о том, что делает метод начальной загрузки. grepcode. com/file/repo1.maven.org/maven2/org.opensaml/opensaml/ - person Mario; 19.02.2015