Я использую CXF для связи с WSDL, созданным в WCF. WCF сторона вещей была создана после учебник . Код Java был сгенерирован с использованием скрипта Maven.
Я получил работу с использованием HTTPS для шифрования. Я получил аутентификацию работает. Однако я хотел бы отключить метаданные WSDL на стороне WCF и при этом иметь возможность использовать сторону Java для связи со службой.
В настоящее время я могу получить доступ к службе с публикацией метаданных со стороны Java, используя этот код:
URL wsdlLocation = new URL("https://server.com:7010/Hservice?wsdl");
HttpsURLConnection connection = (HttpsURLConnection) wsdlLocation.openConnection();
HService service = new HService(wsdlLocation);
HAdminService calc = service.getHAdminService();
... (authentication using WSS4JOutInterceptor code and unrelated code here)
System.out.println(calc.add(new Double(5), new Double(5)));
Однако, когда я отключаю публикацию метаданных на стороне WCF, я получаю эту ошибку:
Exception in thread "main" javax.xml.ws.WebServiceException:
org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.blah.hservice.v_1_0.HService.<init>(HService.java:49)
at Main.main(Main.java:85)`
Страница, на которой находится wsdl, отображает это с отключенной публикацией метаданных (это отрывок):
This is a Windows© Communication Foundation service.
Metadata publishing for this service is currently disabled.
If you have access to the service, you can enable metadata publishing by completing the following steps to modify your web or application configuration file:
Я ожидал, что смогу найти «метаданные CXF неопубликованные» и увидеть, как многие люди делают это ... но ничего не нашли. Как мне связаться с этим сервисом без публикации WSDL?