Как программно добавить привязку к клиентскому коду CXF? - PullRequest
1 голос
/ 23 июня 2011

Я пишу задачу ANT, которая пытается создать прокси для веб-службы CXF, как показано ниже:

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

Если я запускаю его как метод Main в Eclipse, он работает нормально.

Однако, если я пытаюсь выполнить задачу ANT, она всегда завершается с ошибкой:

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

Как программно добавить эту привязку к приведенному выше коду?

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Я нашел обходной путь, который не требует помещения файла 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);
0 голосов
/ 24 июня 2011

Согласно this , файл cxf.xml должен находиться в пути к классу клиента, в данном случае Ant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...