2013-06-04 5 views
0

Apache CXF를 사용하여 웹 서비스를 개발 중이며 스키마 유효성 검사를 통한 첫 번째 접근 방식을 계약합니다. 문제는 유효성 검사가 작동하지 않는다는 것입니다. 오류가 없으므로 활성화되지 않습니다. 그러나 유효성 확인 is configured.Apache CFX 스키마 유효성 검사 - 계약 우선

따라서 Apache CXF 공식 사례를 살펴보면 here을 찾을 수 있습니다.

나는 wsdl_first 예에보고했다 및 WSDL에서 스키마 검증 및 일부 제한을 추가 수정 : 놀랍게도

<!-- HTTP Endpoint --> 
<jaxws:endpoint xmlns:customer="http://customerservice.example.com/" 
    id="CustomerServiceHTTP" address="http://localhost:9090/CustomerServicePort" 
    serviceName="customer:CustomerServiceService" endpointName="customer:CustomerServiceEndpoint" 
    implementor="com.example.customerservice.server.CustomerServiceImpl"> 

    <jaxws:features> 
     <bean class="org.apache.cxf.feature.LoggingFeature" /> 
    </jaxws:features> 
      <!-- schema validation--> 
    <jaxws:properties> 
     <entry key="schema-validation-enabled" value="true" /> 
    </jaxws:properties> 
</jaxws:endpoint> 

, 그것 중 하나가 작동하지 않습니다.

예, wsdl_first_xmlbeans 예제를 보았습니다. README.txt 파일에 따르면 은 CXF 구성을 사용하여 스키마 유효성 검사을 사용하는 방법을 보여줍니다.

이 예에서는 스키마 유효성 검사가 작동합니다. 두 예제의 차이는 두 번째 예제가 JAX-WS API와 XMLBeans 접근 방식을 사용한다는 점입니다. 해야 할 일이 있습니까? 첫 번째 예제에서 스키마 유효성 검사가 작동하지 않는 이유는 무엇입니까? 아마도 나는 뭔가를 놓치고 있습니다.

답변

0

서비스 측면에서 유효성을 검사하려면 jaxws : endpoint에 wsdlLocation 속성을 설정해야 WSDL을로드해야합니다 (그러면 스키마가 포함될 것입니다). 현재이 예제의 유효성 검증은 클라이언트 측에만 있습니다. 서비스를 실행하면 로그에 다음이 표시됩니다.

INFO: Creating Service {http://server.customerservice.example.com/}CustomerServiceImplService from class com.example.customerservice.CustomerService 

이는 WSDL을 전혀 사용하지 않는 것으로 나타납니다.

+0

감사합니다. Daniel. Jetty (cxf-servlet.xml의 구성)를 실행하고 wsdlLocation 속성을 추가하면 작동합니다. 그러나 기본 서버 구성 (mvn -Pserver)에서는 작동하지 않습니다. 어떤 설정 파일을 편집해야합니까? cxf.xml? 작동 안함 – jddsantaella