我公开了一个用Java编写的Web服务。我的架构有复杂类型对象。
一切都很好。使用WSIMPORT命令生成客户端存根时,我注意到了
这里是生成的客户端存根中的静态内部类。
使用
生成内部类JAXB, XJC -> create multiple class files
但是获得错误具有相同名称的类/接口
" com.webservices.EducationDetails"已在使用中。使用类自定义来解决此问题
冲突。但我找不到解决WSIMPORT中名称的方法。
在XSD中为ComplexType生成WSIMPORT中的静态内部类是默认行为吗?
有没有办法避免在Web服务客户端存根中生成静态内部类
答案 0 :(得分:0)
在XSD中为ComplexType生成WSIMPORT中的静态内部类是默认行为吗? 否.Web服务客户端存根生成基于WSDL中的配置定义。 (的.xsd)
有没有办法避免在Web服务客户端存根中生成静态内部类
如果不看你的WSDL架构,很难说。我猜你已经以WSIMPORT为你生成内部类的方式声明了复杂类型。 如果将复杂类型声明为元素,则不应生成内部类。
示例
<xs:element name="ResponseInformation" type="Response" />
<xs:complexType name="Response">
<xs:sequence>
<xs:element type="xs:string" name="testField1" />
</xs:sequence>
</xs:complexType>
这就是我猜的。尝试重新定义复杂类型。如果你发布你的WSDL我可以准确地告诉你哪里出错了。
答案 1 :(得分:0)
我遇到了同样的问题,使用了以下命令,该命令正确地为我生成了所有请求响应类。它还创建了内部静态类。您必须使用-keep选项
wsimport -keep C:\D_DRIVE\My_Work\USEI\SOAPService\OI_Manhattan_To_Consignor_EvreuxService_PreProd_Org.wsdl