加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用CXF wsdl2java将jar中的wsdl捆绑在一起

发布时间:2020-12-15 08:38:26 所属栏目:Java 来源:网络整理
导读:我正在开发一个实现,它将使用我从供应商处获得的wsdl.我们的项目是在 Spring和CXF上运行的,我想创建一个允许我访问这个供应商的wsdl服务的jar,但是我遇到了类路径问题. 使用CXF的wsdl2java我能够生成如下代码: WSDL_LOCATION = new URL("file:SomeService.w
我正在开发一个实现,它将使用我从供应商处获得的wsdl.我们的项目是在 Spring和CXF上运行的,我想创建一个允许我访问这个供应商的wsdl服务的jar,但是我遇到了类路径问题.

使用CXF的wsdl2java我能够生成如下代码:

WSDL_LOCATION = new URL("file:SomeService.wsdl");

该服务要求wsdl在类路径中,但我想将它捆绑在jar中,以便它可以作为独立的jar分发.使用wsdl2java工具,我能够将URL实例化中的字符串指定为我想要的任何内容.但是,我没有在jar中找到自定义字符串和wsdl文件位置的组合.

我想让它按照我的意愿工作的唯一方法是将wsdl文件放在SomeService.class所在的文件夹中,并使用以下行:

WSDL_LOCATION = TrackService.class.getResource("TrackService_v4.wsdl");

但是,这有一个缺点,我不得不手动编辑java代码并自己编译.这是不可取的,因为我们最终希望将此过程作为maven构建的一部分,并让wsdl2java自动生成和编译.

我很好wsdl在jar中的任何位置,但我不知道要传递给wsdl2java以使其引用jar中的文件.

有没有人有任何建议或经验这样做?

解决方法

您需要按如下所示指定classpath wsdl位置以生成使用ClassLoader将此wsdl加载为类路径资源的存根:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.4.3</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-bindings-soap</artifactId>
            <version>2.4.3</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated-sources/cxf
                </sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/yourWSDL.wsdl</wsdl>
                        <extraargs>
                            <extraarg>**-wsdlLocation**</extraarg>
                            <extraarg>**classpath:yourWSDL.wsdl**</extraarg>
                        </extraargs>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读