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?
我正在尝试在 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?