Использование FOP и JBOSS EAP 7 - PullRequest
0 голосов
/ 05 ноября 2018

При использовании JBOSS EAP 7 и Apache FOP я случайно (?) Получаю исключение при создании нового объекта Fop. При перезапуске код может работать. Я подозреваю, что проблема с загрузкой классов. В автономной ситуации (Eclipse) все работает отлично. Некоторые люди предполагают, что реализация FOP уже загружена в другом контексте безопасности. Бьет меня, что это значит.

Вот исключение: Причина: java.lang.ClassCastException: org.apache.fop.render.afp.extensions.AFPExtensionHandlerFactory не может быть приведен к org.apache.fop.util.ContentHandlerFactory

Пример кода:

import java.io.File;

import javax.annotation.PostConstruct;
import javax.ejb.ConcurrencyManagement;
import javax.ejb.ConcurrencyManagementType;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.apache.commons.io.output.NullOutputStream;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * Force classloader to use FOP apache implementations first (experimental)
 */
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class InitBean {
    private static final Logger logger = LogManager.getLogger(InitBean.class.getName());

    public InitBean() {
        super();
    }

    @PostConstruct
    public void initClassloader() {
        try {
            FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
            FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, new NullOutputStream());
            logger.debug("Created FOP handler {}", fop.getDefaultHandler().getClass().getName());
        }
        catch (Exception e) {
            logger.error(e.getMessage());
        }
    }
}

Библиотеки: Apache fop 2.2; Xalan-2.7.2; docx4j-экспорт-фо-6.0.1; xmlgraphics-Обще-2,2; xercesImpl-2.11.0; docx4j-6.0.1; сериализатору-2.7.2

Как я могу исправить эту проблему?

...