概述
使用 jaxws-ri-2.2.10,根据wsdl文件生成webservice客户端:
wsimport -s src -d bin -p com.client document.xml
出现错误,错误如下:[ERROR] 无法生成 SEI, 类com.client.XX 已存在。请使用JAX-WS定制设置重命名 wsdl:portType
Exception in thread "main" com.sun.tools.ws.wscompile.AbortException
at com.sun.tools.ws.wscompile.WsimportTool.generateCode(WsimportTool.java:469)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:209)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:183)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.sun.tools.ws.Invoker.invoke(Invoker.java:174)
at com.sun.tools.ws.WsImport.main(WsImport.java:57)
原因是wsdl:portType 的名称和wsdl:operation的名称相同导致的,我的wsdl(document.xml)中:ZMM_QYZXK_SPP_CGZT和ZmmQyzxkSppCgzt去掉下划线、不区分大小写的情况下,是同名文件。
<wsdl:portType name="ZMM_QYZXK_SPP_CGZT"> <wsp:Policy> <wsp:PolicyReference URI="#IF_ZMM_QYZXK_SPP_CGZT" /> </wsp:Policy> <wsdl:operation name="ZmmQyzxkSppCgzt"> <wsp:Policy> <wsp:PolicyReference URI="#OP_ZmmQyzxkSppCgzt" /> </wsp:Policy> <wsdl:input message="tns:ZmmQyzxkSppCgzt" /> <wsdl:output message="tns:ZmmQyzxkSppCgztResponse" /> </wsdl:operation> </wsdl:portType>
解决方法使用customization进行重命名(可以重命名各种名称),重命名ZMM_QYZXK_SPP_CGZT为新名称ZMMQYZXKSPPCGZTClass:bind.xml
<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="file:/E:/document/download/jaxws-ri-2.2.10/bin/document.xml" xmlns="http://java.sun.com/xml/ns/jaxws"> <package name="com.lantong.dpcenter.ws.erpclientCgzt"/> <!-- default settings --> <enableWrapperStyle>true</enableWrapperStyle> <enableAsyncMapping>false</enableAsyncMapping> <!-- wsdl:portType customization --> <bindings node="wsdl:definitions/wsdl:portType[@name='ZMM_QYZXK_SPP_CGZT']"> <!-- change the generated SEI class --> <class name="ZMMQYZXKSPPCGZTClass"/> <!-- you can also override the following customization settings --> <enableWrapperStyle>true</enableWrapperStyle> <enableAsyncMapping>false</enableAsyncMapping> </bindings> </bindings>
使用 -b <path> 指定 jaxws/jaxb 绑定文件或附加模式
wsimport -s src -d bin -b bind.xml -p com.client document.xml
搞定
参考
http://www.mincoder.com/article/859.shtml
最后
以上就是飘逸世界为你收集整理的wsimport [ERROR] 无法生成 SEI, 类com.xx.XX 已存在。请使用JAX-WS定制设置重命名 wsdl:portType...的全部内容,希望文章能够帮你解决wsimport [ERROR] 无法生成 SEI, 类com.xx.XX 已存在。请使用JAX-WS定制设置重命名 wsdl:portType...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复