[英]Understanding Spring-WS
我在Spring
上有一个项目,我想使其成为SOAP Web Service
。
我有实体,DAO和控制器,并且我不想使用 Apache CXF。
我读到Spring-WS首先是合同。 我正在使用Intellij Idea,它从我的实体生成了.wsdl和.xsd文件。
如果我删除实体并继续,它将首先算作合同吗?
您能给我推荐一个很好的例子,还是可以帮助我理解Spring-WS到底是什么以及如何开发它的东西?
啊,我最近也经历了很多相同的任务,以了解如何通过基于xsd的spring-ws发布Web服务。 我强烈建议您查看我发现Spring WS 2 Made Easy的博客
在我浏览的20多个作品中,它是最有帮助的作品之一,并且完整的资源可以轻松下载。
您可以仅基于xsd(或wsdl)发布Web服务。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sws="http://www.springframework.org/schema/web-services"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/web-services
http://www.springframework.org/schema/web-services/web-services-2.0.xsd">
<!-- To detect @Endpoint -->
<sws:annotation-driven />
<!-- publish wsdl from xsd (use during development)-->
<sws:dynamic-wsdl
id="processStuff"
portTypeName="MyService"
locationUri="/myService"
requestSuffix="Request"
responseSuffix="Response"
targetNamespace="http://mycompany.com/dostuff">
<sws:xsd location="/WEB-INF/xsds/myschema.xsd"/>
</sws:dynamic-wsdl>
<!-- publish static wsdl (better for production deployments)-->
<sws:static-wsdl id="orders" location="/WEB-INF/wsdl/orders.wsdl"/>
</beans>
Spring WS将在id的位置发布wsdl,对于xsd示例,它将发布在... http:// localhost:8080 / [warName] /processStuff.wsdl
发布时,来自xsd的与请求和响应后缀相匹配的项目将被解释为wsdl操作。
然后,您需要开发一个用@Endpoint注释的类,该类与xsd中的操作和参数匹配。
小例子:
@Endpoint
public class MyWebService {
@PayloadRoot(namespace = "http://mycompany.com/dostuff", localPart = "SomeRequest")
@ResponsePayload
public SomeResponse getSomething(@RequestPayload SomeRequest something) {
return new SomeResponse();
}
}
我要说的是合同,您只是通过代码编写了合同,这是我之前做过的。 我宁愿自己写Java代码,也不愿自己写XSD。
正如Sean F所指出的那样,动态wsdl生成仅应在开发过程中完成,如Spring页面上所述:
警告
尽管从您的XSD在运行时创建WSDL可能非常方便,但是这种方法有两个缺点。 首先,尽管我们尝试使各个发行版之间的WSDL生成过程保持一致,但仍有可能(稍微)对其进行更改。 其次,生成有点慢,尽管一旦生成,就将WSDL缓存起来供以后参考。 因此,建议仅在项目的开发阶段使用。 然后,我们建议使用浏览器下载生成的WSDL,将其存储在项目中,并使用公开它。 这是确保WSDL不会随时间变化的唯一方法。
请查看spring docs以获取所需的所有信息: http : //docs.spring.io/spring-ws/sites/2.0/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.