首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

基于WSDL契约优先的web services服务器端跟客户端开发方式

2013-12-05 
基于WSDL契约优先的web services服务器端和客户端开发方式?(6)??? Output Directory中选择src位置(支持Mav

基于WSDL契约优先的web services服务器端和客户端开发方式

?
(6)??? Output Directory中选择src位置(支持Maven项目),Package Name中填写包路径,选择Finish;


基于WSDL契约优先的web services服务器端跟客户端开发方式
?

2.??? 客户端产生方式

(1)??? 构建普通Java Project项目或在一个Maven项目中,设置Project Facets,并将WSDL放入项目目录下;
(2)??? 项目右键-New-Other-Web Service Client;
(3)??? Service definition选择WSDL文件,级别为最低的Develop,选择Next。
(4)??? Output Directory中选择src位置(支持Maven项目),Package Name中填写包路径,选择Finish;

?

3.??? 测试

(1)??? 服务器端可以采用CXF发布,或简单通过Endpoint发布。


基于WSDL契约优先的web services服务器端跟客户端开发方式
?
(2)??? 客户端可以通过调用生成代码中已有的 ***_Client中Main方法进行调用;

?

二.??? 通过Maven中CXF插件1.??? 添加CXF依赖及插件

(1)??? 在pom文件中加入以下依赖

?

<!-- cxf --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId></dependency>

?

?

(2)??? 加入cxf插件,配置wsdl所在位置及代码生成存放位置

?

<!-- cxf wsdl2java 插件 --><plugin><groupId>org.apache.cxf</groupId><artifactId>cxf-codegen-plugin</artifactId><version>${cxf.version}</version><configuration>    <sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot>    <wsdlOptions><wsdlOption>    <wsdl>${basedir}/src/main/resources/wsdl/soapservice.wsdl</wsdl></wsdlOption>    </wsdlOptions></configuration></plugin>

?

?

2.??? 生成接口编写实现

(1)??? 生成接口
执行 mvn cxf-codegen:wsdl2java,后在项目/target/generated-sources/cxf下会生成服务器端代码,将需要的Domain和服务端点接口(SEI)拷贝到项目中;
(2)??? 添加实现类实现SEI
添加SEI的实现类,并在该类上添加注解@WebService,参数如下:
serviceName 值与 SEI的@WebService注解中name属性值相同
targetNamespace值与 SEI的@WebService注解中targetNamespace属性值相同
endpointInterface 值为SEI的全限定名

?

如果需要配置记录他们的每一个日志消息可以在实现类上添加注解@Features


基于WSDL契约优先的web services服务器端跟客户端开发方式
?

可以或Endpoint发布web services。

?

3.??? 通过Sping发布

(1)??? Web.xml

基于WSDL契约优先的web services服务器端跟客户端开发方式
?

(2)??? Sping配置?

基于WSDL契约优先的web services服务器端跟客户端开发方式
?

(3)??? 启动

启动web项目访问XXX/cxf/ 可以看到wsdl地址如图,点击wsdl后的连接则可以看到wsdl文件内容


基于WSDL契约优先的web services服务器端跟客户端开发方式
?

?

?4.??? 客户端代码生成及访问

将通过执行mvn cxf-codegen:wsdl2java生成的代码全部拷贝至客户端项目中,创建main方法进行访问,方法如下:


基于WSDL契约优先的web services服务器端跟客户端开发方式
?

三.??? 对比结果说明

两种方式从根本上来讲都是通过CXF中wsdl2java.exe的调用,但还是存在以下一些区别:
(1)??? 通过IDE生成的整体过程更简单,代码直接生成至指定包下;通过Maven插件需要手动拷贝文件;
(2)??? Maven生成的结果文件中,服务器端缺少SEI的实现类,客户端缺少调用SEI的实现类,而用IDE生成的情况下,这两个类全部存在。
综上,我认为通过IDE生成基于WSDL契约优先的web services服务器端和客户端代码更方便快捷。

?

?

?

?

热点排行