当前位置: 首页 > 知识库问答 >
问题:

如何用CXF wsdl2java为在线WSDL URL链接生成WebService客户端

满博
2023-03-14
<properties>
        <src.generated.dir>src/main/java</src.generated.dir>
        <artifact.cxf.version>3.1.6 </artifact.cxf.version>
        <xerces.version>2.11.0</xerces.version>
        <inbound.wsdl>http://www.webservicex.com/globalweather.asmx?WSDL</inbound.wsdl>
        <inbound.wsdl.location>http://www.webservicex.com/globalweather.asmx?WSDL</inbound.wsdl.location>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>${artifact.cxf.version}</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${src.generated.dir}</sourceRoot>
                            <defaultOptions>
                                <noAddressBinding>true</noAddressBinding>
                                <faultSerialVersionUID>3105839350746982386</faultSerialVersionUID>
                            </defaultOptions>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${inbound.wsdl}</wsdl>
                                    <wsdlLocation>${inbound.wsdl.location}</wsdlLocation>
                                    <serviceName>webservicex</serviceName>
                                    <extraargs>
                                        <extraarg>-client</extraarg>
                                        <extraarg>-verbose</extraarg>
                                        <extraarg>-p</extraarg>
                                        <extraarg>http://webservicex.ent.com/arm/=com.ent.webservicex.arm</extraarg>
                                    </extraargs>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>xerces</groupId>
                        <artifactId>xercesImpl</artifactId>
                        <version>${xerces.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

共有1个答案

薛枫
2023-03-14

该问题与使用指向WSDL文件的HTTP链接无关。CXF Codegen插件返回的错误是:

在WSDL中找不到服务:WebServiceX

这很正常,因为http://www.webservicex.com/globalweather.asmx?WSDL托管的WSDL只有一个名为globalweather的服务;它没有名为WebServiceX的服务。WSDL中的服务定义对应于WSDL:service元素,如果查看WSDL,您只会看到

<wsdl:service name="GlobalWeather">
  <!-- ... -->
</wsdl:service>

因此,您应该将CXF配置更改为

<serviceName>GlobalWeather</serviceName>

甚至完全省略参数,让插件自动生成它(因为只有一个服务)。

您当前的配置还有其他相关的注意事项,最好进行更改:

<src.generated.dir>src/main/java</src.generated.dir>

生成的代码应该始终放在构建目录下(默认情况下为target)。这是因为生成的代码不是真正的源文件,不应该在版本控制上签入。默认情况下,这就是插件正在做的事情,在target/generated-sources/cxf中生成代码,我建议您继续这样做;因此,您只需要删除 ${src.generated.dir} 。它还自动将生成的源代码添加为源文件夹,因此一切仍将编译。

插件的工作不需要Xerces依赖项,可以删除插件的整个 部分。

没有 参数,所以您也可以删除该参数,它不会做任何事情。

 类似资料:
  • 嗯,首先,对不起我的英语不好。 “enderecodao.java”: 和ENDERECO的WebService“servicoEnderEco.java”:

  • 我需要在我的项目中使用一个web服务。我使用NetBeans所以我右键单击我的项目并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致一个AssertionError,它说: java.lang.AssertionError:org.xml.sax.SAXParseException;systemid:jar:file:/path/to/glassfish

  • 我可能在尝试做一些奇怪的事情,因为这似乎不是一个常见的问题(或者可能我问错了)。我原以为这会很简单。 基本上,我正在寻找的是一种方法,除了通过使用gradle openapi生成器插件: 我所尝试的是以下(以及相关的错误): 输入pec.set(www.example.com/openapi-doc) 实际代码如下所示:

  • 问题内容: 首先,我希望您知道我已经可以连接到Web服务服务器。我问这个问题是因为我想对wsimport生成的客户端如何工作有更深入的了解。根据我的研究,wsimport使用JAXWS。请注意,我对JAXWS不了解。 我使用wsimport生成了客户端。我使用的WSDL来自Axis2 Web服务,并由Axis2自动生成。下面的类是wsimport的结果: 下 下 通过上面的类,我可以确定其中包含W

  • 在做其他事情之前,我想让你知道我已经可以连接到web服务服务器了。我问这个问题是因为我想更深入地了解wsimport生成的客户端是如何工作的。根据我的研究,wsimport使用JAXWS。请注意,我不了解JAXWS。 我使用wsimport生成了我的客户机。我使用的WSDL来自Axis2 web服务,由Axis2自动生成。下面的类是wsimport的结果: 在下 在下 通过上面的类,我可以看出包含

  • 首先登录小米账号,进入【管理平台】,未认证的用户会进入【认证页面】。 认证时需要填写企业与联系人信息: 企业名称 工商营业执照注册号 企业工商营业执照 手机号 email 法人姓名 法人身份证号 法人身份证正反面照片 并且同意协议后,可提交认证申请。 提交认证申请后,会有专人审核,审核通过后就成为认证企业。审核不通过,可以再次提交审核。