2010-12-27 5 views
1

Jboss에서 응용 프로그램을 제대로 실행하고 있습니다. Spring webservice 클라이언트를 작성하려면 wsimport을 사용하여 클래스를 생성했습니다. 나는spring-ws 클라이언트를 사용하는 동안 Jboss에서 스프링 클래스 로더가 발생합니다.

<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> 

에서 제이 보스? LIB 내가 구성에서 다음을 작성했습니다 지금은

spring-ws-1.5.0.jar and saaj-impl-1.3.jar 

을 복사하지만 난 때라도 오류를 얻고있다 ... jboss-jaxws.jar,spring.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

실행중인 java 및 jboss의 버전은 무엇입니까? 그리고 현재 1.5.9 대신에 Spring WS 1.5.0을 사용하고있는 이유가 있습니까? – skaffman

+0

java 1.4, jboss 4.2.3, spring 2.0.7을 사용하고 있습니다. 이유가 없습니다. 그냥 내 봄과 호환되기를 원해. 때문에 봄 버전, 나는 지금 봄 1.0.4를 사용하고 있습니다. 이러한 문제를 피하십시오. – vishnu

답변

1
옆의 콘텐츠와 응용 프로그램에 대한 WEB-INF/제이 보스 - 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 버전에서 작동합니다.

+0

감사합니다. 예. war/lib 폴더에 복사하면이 문제가 나타나지 않습니다. jboss/lib 폴더에 spring-ws.1.5.0.jar를 복사하면이 문제 만 발생합니다. 어떻게 다른 항아리가이 문제를 일으키는 지 알 수 있습니까? – vishnu

2

이것은 JAR의 두 가지 버전이 CLASSPATH에 있음을 나에게 시사합니다. 아마도 하나는 서버 자체에, 다른 하나는 앱의 일부로 배포되었지만 동일한 버전이 아닙니다. 서버 클래스 로더는 응용 프로그램 클래스 로더가 실행되기 전에 먼저 서버 버전을 찾습니다. 앱에서 요구하는 것보다 이전 버전 인 경우 문제가 발생합니다.

다른 배포 된 응용 프로그램을 손상시키지 않으면 서 서버 버전을 제거하지 못할 수도 있기 때문에 해결책이 어렵습니다. 애플리케이션이 JBOSS에 애플리케이션 클래스 로더에 의해로드 된 JAR을 선호하도록 알려주는 플래그가 JBOSS 구성에 있는지 확인하고 이것이 도움이되는지 확인하십시오.

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

+0

이것을 확인하려면 구성 파일은 무엇입니까 – vishnu

관련 문제