Как установить org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl в качестве преобразователя на управляемом сервере JBoss AS 7.0.2

У меня возникла проблема с установкой org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl в качестве javax.xml.transform.TransformerFactory при использовании JBoss AS 7.0.2 в доменном режиме. Если я добавлю следующее свойство в standalone.xml, все будет работать, но если я добавлю то же самое на сервере в host.xml (или в domain.xml), сервер не запустится.

<property name="javax.xml.transform.TransformerFactory" value="org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl"/>

У меня в деплое есть xalan lib, но я даже пытался поставить его как глобальный модуль. Ничего не сработало. Я заметил следующую ошибку в консоли:

[Server:server-one] Exception in thread "main" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.xsltc.trax.SmartTransformerFactoryImpl not found
[Server:server-one]     at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:108)
[Server:server-one]     at __redirected.__TransformerFactory.<clinit>(__TransformerFactory.java:66)
[Server:server-one]     at __redirected.__JAXPRedirected.initAll(__JAXPRedirected.java:82)
[Server:server-one]     at org.jboss.modules.Module$1.run(Module.java:88)
[Server:server-one]     at org.jboss.modules.Module$1.run(Module.java:75)
[Server:server-one]     at java.security.AccessController.doPrivileged(Native Method)
[Server:server-one]     at org.jboss.modules.Module.<clinit>(Module.java:75)
[Server:server-one]     at org.jboss.modules.Main.main(Main.java:257)

Если я просто удалю это свойство, сервер будет работать нормально.

Что еще я могу сделать??

Я использую JBoss AS 7.0.2 Final.

Ссылка на тот же вопрос в сообществе JBoss


person Berne    schedule 27.04.2012    source источник


Ответы (3)


Я предполагаю, что xalan находится где-то внутри JBoss и еще не загружен на ранней стадии запуска.

Возможные решения:

  • отложить присвоение системных свойств
  • явно поместите xalan в путь к классам jvm, чтобы его можно было загрузить при раннем запуске
person Vadzim    schedule 28.02.2013

Вы должны добавить зависимость в файл MANIFEST.
Например, модуль JAR, который использует класс SmartTransformerFactoryImpl, должен иметь следующую строку в файле MANIFEST:

Dependencies: org.apache.xalan

Если вы используете maven, вы можете настроить его для добавления этой строки во время упаковки, добавив следующую конфигурацию в плагин maven JAR:

<configuration>
    <archive>
        <manifestEntries>
            <Dependencies>org.apache.xalan</Dependencies>
        </manifestEntries>
    </archive>
</configuration>
person Sasha Korman    schedule 05.03.2013

У меня была такая же проблема во время миграции веб-приложения на Debian Jessie с apache2 и tomcat7 из старой (Lenny) версии Debian. Я нашел начало решения благодаря Direct Web Remoting: TransformerFactoryConfigurationError.

Я полностью решил эту проблему, переместив xalan.jar вместе xsltc.jar в CATALINA_HOME/lib, который в моей конфигурации является /usr/share/tomcat7/lib. xalan.jar «одного» недостаточно; он должен быть «синхронизирован» с xsltc.jar, так как в xalan.jar \org\apache\xalan\xsltc пусто, а в xsltc.jar есть \org\apache\xalan\xsltc\trax и там у вас есть класс TransformerFactoryImpl. Я некоторое время мучился с этой проблемой, поэтому я надеюсь, что мой опыт может быть кому-то полезен.

person Mathias Zaja    schedule 16.08.2017