我有几个WSDL文件,我正在使用它们来生成客户端代码以使用SOAP与远程服务进行通信。所生成的代码包括以下内容:
public class AddProductService extends Service {
static {
URL url = null;
try {
url = new URL("file:/Users/developer/spg/spg-subman/SubscriptionManager/src/main/resources/wsdl/AddProduct.xml");
我已经剪切掉一些生成的代码,并且只包含我认为已损坏的行。
WSDL文件位于src/main/resources/wsdl
中的项目中,并且将不会在该目录中部署该代码。
我正在将cxf-codegen-plugin插件与maven结合使用来生成此代码。
我有几个问题:
classpath:
URL吗? 答案 0 :(得分:0)
我之所以回答这个问题,是因为我找到了答案,并且看到很多人都在张贴代码片段,这些片段显示出我遇到的相同问题,实际上cxf代码示例也演示了相同的问题。我也有多个wsdlf文件,如何解决也不清楚。
解决此问题的元素是:
<wsdlLocation>AddProduct.xml</wsdlLocation>
从我的角度来看,问题在于标签wsdlLocation提示了一条路径,但这不是路径的条目,只要将wsdl文件名放在此处并在运行时,只要您将wsdl包含在其中即可,将找到jar文件的类路径。
最后,cxf-codegen-plugin文件的configuration部分的pom节如下:
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/AddProduct.xml</wsdl>
<extraargs>
<extraarg>-client</extraarg>
</extraargs>
<wsdlLocation>AddProduct.xml</wsdlLocation>
</wsdlOption>
</wsdlOptions>
</configuration
其结果是,在静态声明中您将得到以下结果:
URL url = AddProductService.class.getResource("AddProduct.xml");
不是这个:
url = new URL("file:/Users/tonyg/App/MyManager/src/main/resources/wsdl/AddProduct.xml");