使用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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |