Spring Webサービス(jax-ws)アプリケーションをデプロイしようとすると、Jbossおよびxercesjarファイルとの競合があることがわかりました。これはエラーです。
09:58:50,852 ERROR [JBossContextConfig] XML error parsing: context.xml
org.jboss.xb.binding.JBossXBRuntimeException: Failed to create a new SAX parser
いくつかのテクニカルフォーラムを通過した後、これがjbossサーバーのバグであることがわかりました。これがそのバグレポートへのリンクです。xercec.jarをlibフォルダーから削除すると表示されます。
しかし、xerces jarを削除すると、アプリケーションがapplicationContext.xml内の特定のxml sysntaxesを解析するために、xcerces jarが必要であると考えるため、サーバーはスプリングエラーを出します。これがスプリングエラーです。
09:14:38,175 ERROR [org.springframework.web.context.ContextLoader] Context
initialization failed: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name
'com.sun.xml.ws.transport.http.servlet.SpringBinding#0 defined in ServletContext
resource [/WEB-INF/applicationContext.xml]: Cannot create inner bean '(inner bean)'
of type [org.jvnet.jax_ws_commons.spring.SpringService] while setting bean property
'service'; nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '(inner bean)': FactoryBean threw exception on object
creation; nested exception is java.lang.LinkageError: loader constraint violation: when
resolving field "DATETIME" the class loader (instance of
org/jboss/classloader/spi/base/BaseClassLoader) of the referring class,
javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>)
for the field's resolved type, loader constraint violation: when resolving field
"DATETIME" the class loader
次のxmlsysntaxが含まれています。
<wss:service>
<ws:service bean="#helloWs"/>
</wss:service>
jboss xmlパーサーがスプリング内部Beanの作成に関係するこの特定のxmlsysntaxを識別できなかったため、サーバーはそのスプリングエラーをスローすると思います。(bean = "#helloWs")。したがって、既存のJbossxmlパーサーをxercessxmlパーサーでオーバーライドするとうまくいくと思います。私の質問はそれをどのように行うかです。この問題に関する代替案も歓迎します。
よろしくお願いします。
参考:同じアプリケーションはGlassfishサーバー3.xでスムーズに(変更なしで)動作します:)しかし、これをJbossサーバーにデプロイする必要があります。