2011-10-22 3 views
2

JBoss 4.2 (JDK 1.6, spring 3.0, spring-ws 2.0)에 spring-ws SOAP 웹 서비스를 배포하려고합니다. O/X 바인딩으로 JAXB2를 사용하고 있습니다. 설치가 잘되고 콩이 발견되어 유선으로 연결되어 요청을 보내고 응답을 생성합니다. 그러나 빈 응답이 나타납니다. 어느 쪽도 SOAP 봉투에 없으며 서버에 조립 된 모든 콘텐츠를 내 간단한 UserDetails에 포함하지 않습니다.빈 SOAP 응답 - JBoss 4.2, Jaxb2, Java 1.6 사용

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <SOAP-ENV:Body> 
     <ns2:UserDetails xmlns:ns2="http://a.dol.com/schemas"> 
      <ns2:name>John</ns2:name> 
      <ns2:lastname>PerX</ns2:lastname> 
     </ns2:UserDetails> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

하지만 난 그냥 뭔가를 얻을 :

정답이 될 것이다

<beans> 
    <!-- Big magic hack to fix the broken SAAJ in JBoss 
    See http://static.springsource.org/spring-ws/sites/1.5/faq.html#saaj-jboss --> 
    <bean id="messageFactory"> 
    <property name="messageFactory"> 
     <!-- This is the Java 6 variant of this fix! Note the "internal" package missing in the spring-ws FAQ. --> 
     <bean class="com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> 
    <property> 
    <bean/> 
</beans> 
:
<Envelope> 
    <Header/> 
    <Body> 
     <ns2:UserDetails xmlns:ns2="http://a.dol.com/schemas"/> 
    </Body> 
</Envelope> 

가 구글을 검색 한 후, 나는 다음과 같은 코드를 추가 할 발견

하지만 이것 또한 도움이되지, 나는 folloiwng 오류가 발생합니다 :

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageFactory' defined in ServletContext resource... 

Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError... 
    Caused by: java.lang.IllegalArgumentException: com.sun.xml.messaging.saaj.soap.LocalStrings != com.sun.xml.internal.messaging.saaj.soap.LocalStrings 

감사합니다. 하여 문제를 해결 않습니다 다음과 제이보스의 run.bat를 업데이트

업데이트

만이 그 일을 올바른 방법입니다?

set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl 
+0

hellloo .. anyone ??? – adi

+0

다음을 추가하면이 문제가 해결되지만 올바른 방법입니까? (편집 된 질문보기) – adi

답변

1

와 보스의 run.bat를 업데이트하여 문제를 해결 않습니다 다음

set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
set JAVA_OPTS=%JAVA_OPTS% -Djavax.xml.soap.SOAPFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl 
2

당신은 완전한 클래스 명에서 탈락 한

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory"> 
    <property name="messageFactory"> 
     <bean class="com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> 
    </property> 
</bean> 

와 스프링 코드로 교체를 messageFactory 빈 정의. 이것은 시작 옵션없이 작동합니다.

+0

Thaks a lot, worked lika a charm : D –