我正在编写一个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
如何以编程方式将此绑定添加到上面的代码中?
答案 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);