如何以编程方式将绑定添加到CXF客户端代码?

时间:2011-06-23 16:30:09

标签: ant cxf

我正在编写一个ANT任务,试图为CXF Web服务创建代理,如下所示:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(ProjectApi.class);
factory.setAddress("http://sasdk1/protex-sdk/v5_0/project");
ProjectApi projectApi = (ProjectApi)factory.create();

如果我在Eclipse中将它作为Main方法运行,它运行正常。

但是,如果我尝试作为ANT任务运行,它总是会失败并出现以下错误:

org.apache.cxf.BusException:
    No binding factory for namespace http://schemas.xmlsoap.org/soap/ registered

如何以编程方式将此绑定添加到上面的代码中?

2 个答案:

答案 0 :(得分:0)

根据this,cxf.xml文件需要位于客户端的类路径中,在本例中为Ant。

答案 1 :(得分:0)

我找到了一种解决方法,不需要将cxf.xml文件放在Ant lib目录下。

URL wsdlURL = null;

try {
wsdlURL = new URL("http://sasdk1/protex-sdk/v5_0/project?wsdl");
 } catch (MalformedURLException e) {
 // TODO Auto-generated catch block
e.printStackTrace();
System.exit(-1);
}

QName SERVICE_NAME = new QName(
            "urn:protex.company.com:sdk:v5.0:project",
            "ProjectApiService");
Service service = Service.create(wsdlURL, SERVICE_NAME);

ProjectApi projectApi = service.getPort(ProjectApi.class);