我是Java新手。我正在尝试创建SOAP Web服务客户端以使用需要用户名密码和ssl证书的供应商Web服务。
供应商向我提供了SoapUI项目文件。我在SoapUI中导入了项目文件并运行了测试。这些测试成功。
然后我使用SoapUI导出wsdl文件并尝试使用wsimport生成java代码。我无法生成代码。我遇到了各种各样的错误,我试图通过在线搜索解决这些错误,但没有一个解决方案有效。
我正在使用SmartBear的 jdk1.8.0_152。和 SoapUI版本5.3.0。
我尝试在 Windows 7 的命令行上使用此wsimport命令:
wsimport -keep -verbose -s src vendor.wsdl
我收到了这条消息:
[WARNING] Simple type "RiskType" was not mapped to Enum due to EnumMemberSizeCap limit. Facets count: 365, current limit: 256. You can use customization attribute "typesafeEnumMaxMembers" to extend the limit.
文件第4317行:/ C:/Projects/soapclient/vendor.xsd
使用SoapUI Project文件,他们还向我发送了以下文件:
所以尝试了wsimport和-b选项,如下所示:
wsimport -keep -verbose -s src vendor.wsdl -b ../jaxb/jaxbbinding.xml -b ../jaxb/wsdlbinding.xml
我收到了这个错误:
[ERROR] "file:/C:/Projects/soapclient/.../ACORD_v2.2.0.xsd" is not a part of this compilation. Is this a mistake for "file:/C:/Projects/soapclient/..../ProcessSuretyBond_1_2.xsd"?
line 13 of file:/C:/Projects/TestProjects/soapclient/..../jaxb/jaxbbinding.xml
Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException
at com.sun.tools.internal.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:129)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2283)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:183)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:126)
at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168)
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:498)
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159)
at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)
不确定但是我应该从供应商处请求新的绑定文件吗?
它适用于SoapUI,所以不应该使用wsimport吗?
我尝试了解决这个问题的所有解决方案,包括在jdk文件夹中创建jaxb.properties文件,在maven的系统设置中添加jvm参数等。没有工作。
如果有人能指出我正确的方向并帮助解决这个问题,我将不胜感激。非常感谢提前。
答案 0 :(得分:2)
试试这个:
wsimport ./vendor.wsdl -Xnocompile -d ./src-extension -keep -XadditionalHeaders -B-XautoNameResolution
您无需使用供应商提供的绑定文件。您需要从供应商处收到的最后4个文件才能使上述命令有效。