2015-01-28 18 views
0

웹 서비스와 통신해야하는 Spring 웹 애플리케이션 (사실 Liferay 용 포틀릿)을 만들고 있습니다. 우리의 웹 애플리케이션은 JBoss 7.1.1에서 실행됩니다. 이전에 많은 문제없이이 작업을 수행했지만, 그 당시 애플리케이션은 Tomcat 서버에서 실행되었습니다.org.springeframework.ws.soap.client.SoapFaultClientException in jBoss 7.1.1

비누 플러그인으로 webservice를 테스트했는데 webservice가 정상적으로 실행되고 있다고 결론을 내릴 수 있습니다.

내가 무슨 짓을 한거야 :

내가 POJO 파일을 생성 (DTO의?) 제공된 된 .wsdl 파일에서 받는다는 - JAXB2-플러그인을 사용하여. 이러한 클래스는 잘 생성됩니다. 그럼 난 정의한 내 마샬링 콩 : 다음

@Configuration 
public class WebServiceConfiguration { 


    @Bean 
    public Jaxb2Marshaller persoonServiceMarshaller() { 
     Jaxb2Marshaller m = new Jaxb2Marshaller(); 
     m.setMtomEnabled(true); 
     m.setContextPath("services"); 
     return m; 
    } 

    @Bean 
    public WebServiceTemplate persoonTemplate(Jaxb2Marshaller persoonServiceMarshaller) { 
     WebServiceTemplate w = new WebServiceTemplate(); 
     w.setMarshaller(persoonServiceMarshaller); 
     w.setUnmarshaller(persoonServiceMarshaller); 

     w.setDefaultUri("my hardcoded webservice location URI..."); 
     return w; 
    } 

내가이 일을 테스트하는 방법 썼다 :

@Autowired 
    WebServiceTemplate persoonTemplate; 

    public int getPersonCount(String lastName, String firstName, int birthYear, 
      int birthMonth, String postalCode) { 
     System.out.println("Getting PersonCount"); 

     ZoekPersonen zp = new ObjectFactory().createZoekPersonen(); 
     PersoonZoekCriteria criteria = new ObjectFactory() 
       .createPersoonZoekCriteria(); 
     if (lastName != null && !lastName.equals("")) { 
      criteria.setNaam(new ObjectFactory().createPersoonDTONaam(lastName)); 
     } 
     if (firstName != null && !firstName.equals("")) { 
      criteria.setVoornaam(new ObjectFactory() 
        .createPersoonDTONaam(firstName)); 
     } 
     if (birthYear != 0) { 
      criteria.setGeboorteJaar(new ObjectFactory() 
        .createPersoonZoekCriteriaGeboorteJaar(birthYear)); 

     } 
     if(birthYear != 0) { 
      criteria.setGeboorteMaand(new ObjectFactory() 
      .createPersoonZoekCriteriaGeboorteMaand(birthMonth)); 

     } 
     if(postalCode != null && !postalCode.equals("")) { 
      criteria.setPostCode(new ObjectFactory() 
      .createPersoonZoekCriteriaPostCode(postalCode)); 
     } 


     @SuppressWarnings("unchecked") 
     JAXBElement<ZoekPersonenResponse> jaxBResponse = (JAXBElement<ZoekPersonenResponse>) persoonTemplate 
       .marshalSendAndReceive(new ObjectFactory() 
         .createZoekPersonen(zp)); 

     return jaxBResponse.getValue().getReturn().getGevondenPersonen() 
       .getValue().getPersoonDTO().size(); 
    } 

을 나는이 방법을 테스트 할 때를,이 예외가 발생합니다 :

13:12:54,278 INFO [stdout] (http--0.0.0.0-443-6) 13:12:54,275 ERROR [http--0.0.0.0-443-6][render_portlet_jsp:132] null 
13:12:54,279 INFO [stdout] (http--0.0.0.0-443-6) org.springframework.ws.soap.client.SoapFaultClientException: Fault occurred while processing. 
13:12:54,281 INFO [stdout] (http--0.0.0.0-443-6) at BLL.PersoonBLL.getPersonCount(PersoonBLL.java:53) 
13:12:54,283 INFO [stdout] (http--0.0.0.0-443-6) at controllers.MyController.renderView(MyController.java:44) 
13:12:54,284 INFO [stdout] (http--0.0.0.0-443-6) at javax.portlet.GenericPortlet.render(GenericPortlet.java:233) 
13:12:54,285 INFO [stdout] (http--0.0.0.0-443-6) at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103) 
13:12:54,286 INFO [stdout] (http--0.0.0.0-443-6) at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:55) 
13:12:54,290 INFO [stdout] (http--0.0.0.0-443-6) at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100) 
13:12:54,294 INFO [stdout] (http--0.0.0.0-443-6) at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64) 

나는 우둔 해. 내 생각에는 JBoss와 관련이 있고 봤지만 유용한 정보를 찾지 못했다고 생각한다.

참고 :

<plugin> 
     <groupId>org.jvnet.jaxb2.maven2</groupId> 
     <artifactId>maven-jaxb2-plugin</artifactId> 
     <configuration> 
      <schemaDirectory>src\main\resources</schemaDirectory> 
      <schemaIncludes> 
       <include>PersoonWebService.wsdl</include> 
      </schemaIncludes> 
      <generatePackage>services</generatePackage> 
      <generateDirectory>src\main\java</generateDirectory> 
      <verbose>true</verbose> 
     </configuration> 
     <executions> 
      <execution> 
       <phase>generate-resources</phase> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
      </execution> 
     </executions> 
</plugin> 


<dependency> 
    <groupId>org.springframework.ws</groupId> 
    <artifactId>spring-ws-core</artifactId> 
    <version>${spring-ws.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-oxm</artifactId> 
    <version>${spring.suite.version}</version> 
</dependency> 

봄 WS 버전 = 2.1.4-RELEASE 봄 Suite 버전 = 3.2.4-RELEASE

업그레이드 스프링 버전 또는 보스 : 내 메이븐 POM에서 내 종속성 및 플러그인 버전 슬프게도 옵션입니다. 이는 기존 프로덕션 환경에서 실행해야합니다.

힌트 및 팁을 환영합니다.

SoapFaultClientException :

답변

1

는 내 자신이 하나의 고정 예외는 WebService에 의해 발생합니다! 내 요청에는 의무 사항이있는 매개 변수가 부족했습니다. 비록 wsdl이 필요에 따라 그들을 언급하지 않았다고하더라도.

==> 문제는 제 생각에 JBoss에만 국한된 것이 아니 었습니다. (미안 Jboss 너를 shaming 위해,하지만 난 여전히 당신을 좋아하지 않아 ;-)).

+0

여전히 JBoss가 좋지 않기 때문에 : D –