2013-05-03 2 views
0

XSD 스키마에 연결할 수 없습니다. 여기 내 구성입니다 :Spring WS 2에서 정적 XSD 스키마 공개 및 액세스

web.xml을

<servlet> 
    <servlet-name>spring-ws</servlet-name> 
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>transformWsdlLocations</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>spring-ws</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

스프링 WS-servlet.xml에

<sws:annotation-driven/> 
<context:component-scan base-package="example.ws.endpoint"/> 

<sws:dynamic-wsdl id="boo" 
        portTypeName="BooResource" 
        locationUri="/services/"> 
    <sws:xsd location="classpath:example/ws/schema/Boo.xsd"/> 
</sws:dynamic-wsdl> 

WSDL은 [HTTP에 액세스 할 수 있습니다 : // 로컬 호스트 : 포트/스프링 WS- server-0.1-SNAPSHOT/services/boo.wsdl]하지만 XSD를 노출하려면 어떻게해야하며 URL은 무엇이 될까요?

답변

1

WSDL이 노출 된 것처럼 보이지는 않을지 모르겠습니다. Spring WS는 정적 WSDL과 생성 된 WSDL처럼 XSD를 사용할 수 있도록 만들지 않습니다. 물론 간단한 서블릿이나 MVC (MVC를 사용하는 경우)를 통해 XSD를 사용할 수 있습니다.

내가 내 @Configuration 수업 시간에 이런 일을 정의하여 그것을 위해 스프링 MVC를 사용하지 않고 내 XSD 년대를 노출 할 수있었습니다
+0

실제로 허용 할 수있는 이유는 이것이 받아 들여지는 이유입니다. @evandongen 응답 또는 https://stackoverflow.com/a/42724574/1766166을 참조하십시오. – zygimantus

1

: 당신은뿐만 아니라 this question에서 살펴 보셔야합니다

private ClassPathResource messagesXsdResource = new ClassPathResource("messages.xsd"); 

@Bean 
public SimpleXsdSchema messages() { 
    return new SimpleXsdSchema(messagesXsdResource); 
} 

그 방법을 설명합니다 XML에서이 작업을 수행 할 수 있습니다.