无法覆盖apache中的wsdl位置cxf 2.4.6

时间:2015-10-21 03:59:01

标签: java apache web-services wsdl cxf

我已将wsdl文件放在

E:/testworkspace/projectname/docroot 
                  WEB-INF
                       src
                         com
                           test
                             wsdl

如果我给出完整路径说wsdlLocation =" file:E:/testworkspace/projectname/docroot/WEB- INF/src/com/test/wsdl/some.wsdl" ,它选择了WSDL文件。

但是我需要制作类似于直接获取的通用:

        @WebServiceClient(name = "TestInterfaceService", 
        wsdlLocation = "WEB-INF/wsdl/some.wsdl",                  
        targetNamespace = "http://www.google.com/job") 

     public class TestInterfaceService extends Service {
     public final static URL WSDL_LOCATION;
     public final static QName SERVICE = new QName("http://www.google.com/job", "TestInterfaceService");
     public final static QName TestInterfaceSoapHttpPort = new QName("http://www.google.com/job", "TestInterfaceSoapHttpPort");
  static {
    URL url = null;
    try {

        url = new URL("WEB-INF/wsdl/some.wsdl");

    } catch (MalformedURLException e) {
        java.util.logging.Logger.getLogger(TestInterfaceService.class.getName())
            .log(java.util.logging.Level.INFO, 
                 "Can not initialize the default wsdl from {0}", "WEB-INF/wsdl/some.wsdl");
    }
    WSDL_LOCATION = url;
}

您能否建议如何独立于我的本地系统选择WSDL文件,目前它会抛出错误无法从WEB-INF/wsdl/some.wsdl初始化默认的wsdl

2 个答案:

答案 0 :(得分:0)

您需要有效的网址字符串才能创建新网址。如果您的服务确实公开了URL,则可以选择使用该URL。

如果您的客户是一个Web应用程序,另一个选择是通过您的应用程序使wsdl可用,并使用http://localhost/app/some.wsdl

从那里引用它

希望有所帮助

答案 1 :(得分:0)

如果您将wsdl放在wsdlLocation = "WEB-INF/wsdl/some.wsdl"中并指定,则不确定您要在此处执行的操作,配置:WEB-INF/wsdl完全正常,只要WSLD文件位于WEB-INF/src/com/test/wsdl下像这样的WSDL位置:wsdlLocation = "WEB-INF/wsdl/some.wsdl - 当然它不起作用,在WEB-INF/wsdl中添加你的WSDL,一切都会好的。