3

我无法访问 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>

spring-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://localhost:port/spring-ws-server-0.1-SNAPSHOT/services/boo.wsdl] 上访问,但是我如何公开 XSD 以及 URL 是什么?

4

3 回答 3

3

通过在我的类中定义类似的东西,我已经能够在不使用 Spring-MVC 的情况下公开我的 XSD @Configuration

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

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

您也应该看看这个问题,它解释了如何在 XML 中执行此操作。

于 2013-05-13T11:08:52.557 回答
1

恐怕这是不可能的,至少不会像您的 WSDL 那样自动公开。Spring WS 并不打算像使用静态和生成的 WSDL 那样使您的 XSD 可用。当然,您可以通过一个简单的 servlet 或通过 MVC(如果您也使用 MVC)使您的 XSD 可用。

于 2013-05-03T12:22:29.083 回答
0

如果您使用的是 Spring Boot,那么public您可以在可以创建的文件夹下放置的任何内容都resources将是公开可用的。

您可以将 xsd 放在那里并将 wsdl 指向该定义:

   <xsd:schema>
      <xsd:import namespace="http://jaxws.com.your.ns" schemaLocation="/your.xsd"/>
    </xsd:schema>

现在这将使您的 xsd 在http://localhost:8080/your.xsd

于 2021-03-05T10:44:02.690 回答