2014-09-10 4 views
0

Мне нужны две реализации TransformerFactory для моего программного обеспечения. Я должен обработать xml и xls/fo (форматирующий объект) для PDF-файлов. Для более новых версий нашего программного обеспечения, где я хочу использовать пользовательские функции xsl, я использую net.sf.saxon.TransformerFactoryImpl, который напрямую ссылается на исходный код. Из-за старых данных в базе данных необходимо обработать старые с помощью org.apache.xalan.processor.TransformerFactoryImpl, saxon выкинул бы ошибку и не отобразил PDF.Установить javax.xml.transform.TransformerFactory в Wildfly 8.1

При использовании Tomcat я просто установил «-Djavax.xml.transform.TransformerFactory = org.apache.xalan.processor.TransformerFactoryImpl» как аргумент vm, и это не было проблемой.

При использовании установки Vm аргумент вызывает wildfly забросить следующее исключение Wildfly: «Исключение в потоке„основной“javax.xml.transform.TransformerFactoryConfigurationError: Провайдер не org.apache.xalan.processor.TransformerFactoryImpl найден»

Xalan.jar содержится в моем файле войны. Специальная версия xalan для jboss является частью дистрибутива Wildlfy.

Почему их никто не нашел? Почему Wildfly даже пытается загрузить завод при запуске сервиса wildfly? Как настроить Wildfly для поиска фабрики трансформаторов xalan во время запуска? Запись ввода модуля в файл standalone.xml или domain.xml не помогает.

Я знаю, что в Wildfly есть ошибка, говорящая, что перенаправление фабрики трансформатора не указывает на фабрику трансформаторов Wildfly, а на значение по умолчанию java. Я думаю, что это не должно влиять на мою проблему, потому что я пытаюсь установить другое значение по умолчанию.

Любая помощь?

ответ

0

У меня была аналогичная проблема с JBoss 7, и это, похоже, та же проблема с Wildfly тоже. Просто дикое предположение: JBoss загружает свои файлы конфигурации при запуске и сохраняет их при завершении работы (не уверен, почему, но если вы внесете какие-либо изменения в standalone.xml, а JBoss будет работать, вы увидите, что при выключении они будут перезаписаны). Я думаю, JBoss должен использовать трансформатор для сохранения своих конфигурационных файлов (standalone.xml), поэтому он загружает трансформатор при запуске (даже до того, как конфигурация модулей была проанализирована, чтобы увидеть, что есть библиотека xalan для добавления в classpath и до того, как файл войны был развернут). Но, как я сказал, это просто догадка ... Возможно, я ошибаюсь.

Для того, чтобы избавиться от ошибки запуска, вам необходимо разместить библиотеку xalan в $ JAVA_HOME/jre/lib/ext (таким образом, вы сделаете ее доступной для всех приложений), или вы можете прекратить использование системы свойство -Djavax.xml.transform.TransformerFactory и добавьте следующее свойство в ваш файл standalone.xml.

<system-properties> 
    <property name="javax.xml.transform.TransformerFactory" value="org.apache.xalan.xsltc.trax.TransformerFactoryImpl"/> 
</system-properties> 
+0

спасибо. Я дам ему попробовать. –

+0

Это решение специально не работает, так как система WildFly и JBoss Modules обрабатывает JAXP. Погрузчик контекстного класса потока должен использоваться для поиска поставщика; по какой-то причине это не так или работает некорректно. –

Смежные вопросы