Spring WS 没有 xsd

Spring WS without xsd

我正在尝试在 Spring 和 Spring 没有任何 XSD 的 WS 中创建简单的 WS 项目。部署在码头上。 可以填充 WS 端点并仅从 java 类 生成 WSDL(没有静态 XSD 或 WSDL - 我浏览了很多教程,但都是必需的)。

任何帮助、提示或link非常感谢。

我有这样的东西:

1) 请求

@XmlRootElement
public class MessageWSRequest {

@XmlElement
private String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}
}

2) 端点

@Endpoint
public class MessageWS {
@PayloadRoot(namespace = "http://message.com/ws/message" ,localPart="MessageWSRequest")
public String handleMathServiceRequest(@RequestPayload MessageWSRequest messageWSRequest) {
    return "ok";
}
}

3) springContext.xml

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

4) web.xml

<servlet>
    <servlet-name>webservices</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>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>webservices</servlet-name>
    <url-pattern>*.wsdl</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>webservices</servlet-name>
    <url-pattern>/endpoints/*</url-pattern>
</servlet-mapping>

现在我希望 URL 像这样 localhost:8080/messageTest/endpoints/MessageWS.wsdl 使用生成的 WSDL。

我是不是漏掉了一些配置?

谢谢大家

好吧,第二天清醒的头脑告诉我这个事实: Spring WS 提供 "only" 合同优先,从 XSD 模式

开始

我将改用 CXF: Apache CXF 提供契约最后(从 Java 开始)和契约优先(从 WSDL 开始)两种方法。

如您所知,Spring WS 专为合同优先服务而设计。但是我认为,如果您在构建过程中从带注释的 类 生成 XSD,您仍然可以实现您想做的事情。这是一种方法:

Generating XSD schemas from JAXB types in Maven?