Классы генерятся с помощью
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<!-- ... -->
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Когда я держал wsdl локально, то тут проблем нет:
public static ExchangeMonitorPortType makeProxy_fromFile(Bases_1c base1c) throws Exception {
// auth while getting wsdl
// https://stackoverflow.com/questions/22407994/jax-ws-client-cannot-authenticate
//URL url = new URL(base1c.getWsWsdl());
URL url = new URL("classpath:wsdl/ExchangeMonitorWS.wsdl");
QName qname = new QName(base1c.getWsUrl(), base1c.getWsService());
Service service = Service.create(url, qname);
ExchangeMonitorPortType proxy = service.getPort(ExchangeMonitorPortType.class);
BindingProvider prov = (BindingProvider)proxy;
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, base1c.getWsUser());
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, base1c.getWsPass());
return proxy;
}
Но когда я поменял порт на сервере, то клиент (этот код) перестал коннектится.
Если включить URL url = new URL(base1c.getWsWsdl());
, то Service service = Service.create(url, qname);
ловит эксепшен 401 Not Authenticated.
Подскажите, как правильно его авторизовать? Везде примеры авторизации уже после чтения wsdl.
Можно ли обойтись без сохранения wsdl в файлы, как описано в https://stackoverflow.com/questions/22407994/jax-ws-client-cannot-authenticate ?