我的应用程序在Jboss中正常运行。为了编写spring webservice客户端,我使用wsimport
生成了类。我在配置中写了以下内容
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="messageFactory">
<bean class="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/>
</property>
在jboss?lib我有jboss-jaxws.jar,spring.jar
...现在我复制了
spring-ws-1.5.0.jar and saaj-impl-1.3.jar
但是我遇到了以下错误:
The Spring ContextLoaderListener we wrap threw on contextInitialized.
But for our having caught this error, the web application context would not have initialized.
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.IllegalArgumentException: Class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] does not implement the NamespaceHandler interface
Caused by:
java.lang.IllegalArgumentException: Class [org.apache.xbean.spring.context.v2.XBeanNamespaceHandler] does not implement the NamespaceHandler interface
at org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver.initHandlerMappings(DefaultNamespaceHandlerResolver.java:119)
请帮我解决此错误。这些错误只有在保留这些罐子后才能得到。但这些都需要运行我的新代码。请建议我如何避免它们?
答案 0 :(得分:2)
这告诉我,您的CLASSPATH中有两个版本的JAR - 可能是服务器本身的一个版本,另一个是应用程序的一部分 - 它们不是同一个版本。在应用程序类加载器运行之前,服务器类加载器将首先找到服务器版本。如果它是您的应用程序所需的早期版本,那么您将遇到问题。
解决方案很难,因为您可能无法在不破坏其他已部署应用的情况下删除服务器版本。查看应用程序的JBOSS配置中是否有一个标志,告诉JBOSS更喜欢应用程序类加载器加载的JAR,看看是否有帮助。
http://www.datadisk.co.uk/html_docs/java_app/jboss5/jboss5_deployment.htm http://community.jboss.org/wiki/ClassLoadingConfiguration http://community.jboss.org/wiki/JBossClassLoadingUseCases
答案 1 :(得分:1)
您可以使用下一个内容为您的应用程序创建WEB-INF / jboss-web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 4.2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
myapp:loader=anyUniqueName
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
这可以防止类加载器查找JBoss库。作为缺点,您必须在WAR / lib文件夹中提供所有第三方jar。
这适用于4.2您可以查找与您当前使用的版本类似的内容。