JAXWS无法创建Web服务客户端:wsimport实用程序

时间:2014-01-02 07:36:23

标签: jaxb jax-ws netbeans-7 wsimport

每当我尝试从wsdl url创建Web服务时,我会在Netbeans IDE中获得一个错误窗口。没有这样的包裹或参考的地方。

enter image description here

这是我的堆栈跟踪。

parsing WSDL...

[ERROR]已使用具有相同名称“org.wi.link.action.Exception”的类/接口。使用类自定义来解决此冲突。   文件第35行:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ERROR](与上述错误相关)从此处生成另一个“例外”。   文件第30行:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ERROR]两个声明在ObjectFactory类中导致冲突。   文件第35行:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[错误](与上述错误有关)这是另一个声明   文件第30行:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[ERROR]两个声明在ObjectFactory类中导致冲突。   文件第38行:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

[错误](与上述错误有关)这是另一个声明   第32行文件:/ D:/Development/source/WebServiceProject/TestProject/src/conf/xml-resources/web-service-references/service/wsdl/urladdress/wionline/services/service.wsdl

D:\ Development \ source \ WebServiceProject \ TestProject \ nbproject \ jaxws-build.xml:225:wsimport失败 BUILD FAILED(总时间:2秒)

如果需要,我也可以发布jaxws-build.xml,提前谢谢。

2 个答案:

答案 0 :(得分:3)

引擎盖下wsimport utinilty使用JAXB编译器,因此实际错误与JAXB相关。如JAXB guide中所述,您有两种选择 - 使用模式绑定或factoryMethod自定义,但这取决于您的WSLD,并且可能无法实现。另一种选择是重命名WSDL文档中的冲突类型。

根据以下评论,我们假设这是您的架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="Exception"> 
        <xs:sequence> 
            <xs:element minOccurs="0" name="Exception" nillable="true" type="xs:anyType"/>
        </xs:sequence>
    </xs:complexType> 
    <xs:element name="Exception"> 
        <xs:complexType> 
            <xs:sequence> 
                <xs:element minOccurs="0" name="Exception" nillable="true" type="Exception"/> 
            </xs:sequence> 
        </xs:complexType>
    </xs:element>
</xs:schema>

要生成相同的错误,您可以运行xjc编译器:

/bin/xjc.sh schema.xsd

如上所述,修复此问题的最简单方法是重命名复杂类型或元素名称。但为了使事情更有趣,您可以定义JAXB自定义

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  version="1.0">
  <jaxb:bindings schemaLocation="schema.xsd">
    <jaxb:bindings node="//xs:complexType[@name='Exception']">
      <jaxb:factoryMethod name="TypeException"/>
      <jaxb:class name="TypeException" />
    </jaxb:bindings>
  </jaxb:bindings>
</jaxb:bindings>

再试一次:

/bin/xjc.sh -b binding.xml schema.xsd

可能会向wsimport实用程序提供相同的绑定:

wsimport myService.wsdl -b binding.xml

答案 1 :(得分:3)

无法使用wsdl创建Webservice,只能使用wsdl创建Web服务客户端(使用WS)。

对我来说问题解决了,我错误地添加了#34; Web服务客户端&#34;如果wsdl url不正确,我正在添加http://localhost:8080/MyService/MyService?Tester,这是ws测试人员网址。

正确的网址应该是WSDL网址,即http://localhost:8080/MyService/MyService?WSDL

遵循的步骤: 1.参加项目战 2.右键单击新建&gt; WebService客户端 3.选择WSDL URL,粘贴WSDL URL,给出包名称

它完成了:))

对我来说问题已经解决了。

您只能从头开始或从现有bean创建WS。

希望这会对你有所帮助。