首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache CXF java2wsdl:自定义符号名称

Apache CXF java2wsdl:自定义符号名称
EN

Stack Overflow用户
提问于 2020-02-17 23:46:56
回答 1查看 209关注 0票数 0

我们的java应用程序需要与SOAP服务通信。我们使用Apache CXF来实现一个jaxws客户端。这些类是由wsdl2java根据我们从服务提供者处收到的WSDL文件生成的。

不幸的是,服务提供的符号名称都是大写的,并以下划线分隔(例如PRODUCT_ATTACHMENT)。这非常令人困惑,因为它与典型的"CamelCase“java编码约定(例如ProductAttachment)不同。

我知道您可以为每个类定义自定义映射。但是由于有大量的类和成员,我想自动化符号名称转换。

所以我想知道是否有一种方法可以为wsdl2java提供某种规则或java代码(作为钩子),告诉它在生成的java类中将符号名称ABC_DEF转换为AbcDef

如果没有,也许有替代Apache CXF的解决方案来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2020-02-18 15:40:10

你可以尝试使用camelcase-always插件。有它与maven-jaxb2- examples on stackoverflow集成的插件。

cxf-codegen-plugin配置示例:

代码语言:javascript
复制
    <dependencies>
        <dependency>
            <groupId>org.andromda.thirdparty.jaxb2_commons</groupId>
            <artifactId>camelcase-always</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>


    <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>3.3.5</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${basedir}/src/main/resources/wsdl/customer-service.wsdl</wsdl>
                                    <wsdlLocation>classpath:wsdl/customer-service.wsdl</wsdlLocation>
                                    <extraargs>
                                        <extraarg>-verbose</extraarg>
                                        <extraarg>-xjc-camelcase-always</extraarg>
                                    </extraargs>
                                </wsdlOption>
                                <bindingFiles>
                                    <bindingFile>${basedir}/src/main/resources/wsdl/bindings/customer-service-bindings.xjb</bindingFile>
                                </bindingFiles>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.andromda.thirdparty.jaxb2_commons</groupId>
                        <artifactId>camelcase-always</artifactId>
                        <version>1.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60265965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档