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

Contract-First模式开发WebService及WSDL2Java工具

2012-11-11 
Contract-First方式开发WebService及WSDL2Java工具WSDL文件:参考附件OrderProcess.wsdl?1. WSDL元素与Java

Contract-First方式开发WebService及WSDL2Java工具

WSDL文件:参考附件OrderProcess.wsdl

?

1. WSDL元素与Java Component之间的映射关系

??? (1) <wsdl:definitions> attribute:targetNamespace --> Java package

??? (2) <wsdl:portType> --> Java Service Endpoint Interface (SEI)

??? (3) <wsdl:portType> child Element: <wsdl:operation> --> Java methods

??? (4) <wsdl:service> --> Service class

??? (5) <wsdl:message> --> Service operation parameters

2. WSDL2Java Tool

? ? wsdl2java -impl -server -client -d generate OrderProcess.wsdl

??? 参数说明:

??? -ant:生成ANT build.xml

??? -impl:生成服务实现类

??? -server:生成Server组件,用于启动服务和发布服务

??? -client:生成Client组件,用于测试服务

??? -d:生成代码的路径

??? 例如:wsdl2java -impl -server -d generate OrderProcess.wsdl

???? wsdl2java -client -d src http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl

?

???? 该工具的其他可选参数可通过添加-?,或-h,或-help的方式查看。

???? 也可直接查看官方文档:https://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

3. 通过WSDL2Java Tool生成的Client调用服务器端时发生的异常

???? (1) Can not initialize the default wsdl from...

???? 产生原因:WSDL路径不正确

???? 解决方法:将WSDL文件也考到项目java文件同级中

???? (2) Error: Two classes have the same XML type name ....
????Use @XmlType.name and @XmlType.namespace to assign different names to them...

???? 产生原因:此错误指具有同名的类或 @XMLType.name 值,但它们存在于不同的 Java 包中。

???? 解决方法:@XML.Type.namespace类添加至现有的@XMLType注释以区分XML类型。

???? 例如:

@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "processOrder", propOrder = {    "arg0"},namespace="http://generate/sample/pcdp/org/processorder/")public class ProcessOrder {}

?

@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "processOrderResponse", propOrder = {    "_return"},namespace="http://generate/sample/pcdp/org/processorderreponse/")public class ProcessOrderResponse {} 

4. WSDL文件有效性验证

??? wsdlvalidator http://localhost:9082/MovieService?wsdl

??? 常用的WSDL文件操作工具客查看安装目录下的bin目录下的脚本。

热点排行
Bad Request.