java - Apache Cxf对不同的包提供不同的服务

标签 java maven cxf

我有这样的 Apache Cxf maven 插件配置:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <defaultOptions>
                    <bindingFiles>
                        <bindingfile>${basedir}/src/main/resources/jaxb-binding.general.xml</bindingfile>
                    </bindingFiles>
                </defaultOptions>
                <sourceRoot>
                    src/main/java/my/generated/services
                </sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${server1}/Service1.svc?wsdl</wsdl>
                    </wsdlOption>
                    <wsdlOption>
                        <wsdl>${server2}/Service2?wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我基本上有两个问题,也许有人可以回答:

1) 如何将这 2 个服务端点提取到不同的目录?现在两者都是“src/main/java/my/generated/services”。我想要: src/main/java/my/generated/services/service1 和 src/main/java/my/generated/services/service2 。

2)如何设置生成的java文件包对于Service1来说是my. generated.services.service1 +(生成的文件包名称),对于Service2是my. generated.services.service2 +(生成的文件包名称)?

我尝试使用绑定(bind)文件进行配置,但只找到了特定命名空间的解决方案。但没有找到更通用的内容。

感谢您的帮助!

最佳答案

我发现将文件生成到不同目录的最简单方法是使用 WSDL2Java 插件的两个不同执行,如下所示。

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <executions>
        <execution>
            <id>generate-sources-service1</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${basedir}/src/main/java/my/generated/services</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${server1}/Service1.svc?wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
        <execution>
            <id>generate-sources-services2</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${basedir}/src/main/java/my/generated/services</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${server2}/Service2?wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

关于java - Apache Cxf对不同的包提供不同的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395262/

相关文章:

java - 如何以图形方式表示重写的方法

java - Spring:将字符串从 View 转换为日历对象

Java:数据结构和通配符的泛型

java - jar 在 Windows 上运行但在 Ubuntu 上不运行

java - 无法获取maven安装路径

java - 单击按钮开始新 Activity 时我的应用程序崩溃

java - maven : Failed to install metadata project Could not parse metadata maven-metadata-local. xml:开始标记之前只允许空白内容

apache - CXF 3.X 和 WSS4J 2.X 中的回调处理程序

java - 验证 CXF HttpAsyncClient 对 use.async.http.conduit 上下文属性的使用

java - 暂停和通知 Java Web 服务中的特定线程