Ora utilizzo Apache CXF come client di servizi Web per un servizio .NET per aggirare l'autenticazione NTLM. Funziona alla grande, ma mi chiedo perché non riesco a essere in grado di impostare l'endpoint di destinazione del servizio web. CXF sembra volere il WSDL in fase di esecuzione per qualche strana ragione - non è sicuro. Prende l'endpoint fisico dal WSDL, che funziona bene negli ambienti di test, ma al momento dell'implementazione è sicuro che cambierà.Client Apache CXF per endpoint dinamici
Ecco po 'di codice per dimostrare:
MyWebServices service = new MyWebServices();
MyWebServicesSoap port = service.getMyWebServicesSoap12();
// Turn off chunking so that NTLM can occur
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);
port.doSomethingUseful();
Anche in questo caso, non c'è posto che posso vedere nel client API CXF che mi permette di impostare l'endpoint del servizio. Non che io possa vedere comunque. In questo caso, l'obiettivo è http://localhost/integration/webservices/mywebservices.asmx, ma potrei essere ovunque. Sicuramente questo problema pedonale è risolto in qualche modo?
non sicuro di quello intendi con la tua ultima affermazione qui – andyczerwonka
Nella classe MyServices, ci sono altri metodi che restituiranno una porta che accetta un parametro URL? Puoi modificare il tuo post per incollare la firma di quella classe? – Kevin
funziona come un incantesimo - grazie – andyczerwonka