WSIMPORT-无法在客户端存根中生成非静态内部类

时间:2015-05-06 08:54:43

标签: java web-services jaxb

我公开了一个用Java编写的Web服务。我的架构有复杂类型对象。

一切都很好。使用WSIMPORT命令生成客户端存根时,我注意到了

这里是生成的客户端存根中的静态内部类。

使用

生成内部类

JAXB, XJC -> create multiple class files

但是获得错误具有相同名称的类/接口

" com.webservices.EducationDetails"已在使用中。使用类自定义来解决此问题

冲突。但我找不到解决WSIMPORT中名称的方法。

问题

  1. 在XSD中为ComplexType生成WSIMPORT中的静态内部类是默认行为吗?

  2. 有没有办法避免在Web服务客户端存根中生成静态内部类

2 个答案:

答案 0 :(得分:0)

  1. 在XSD中为ComplexType生成WSIMPORT中的静态内部类是默认行为吗? 否.Web服务客户端存根生成基于WSDL中的配置定义。 (的.xsd)

  2. 有没有办法避免在Web服务客户端存根中生成静态内部类

  3. 如果不看你的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