CXF & SSL: Problemas de tempo limite
-
03-07-2019 - |
Pergunta
Eu tenho o seguinte código que eu estou tentando usar para acessar um webservice via HTTPS usando Apache CXF. Mas sempre que a minha mensagem sai, eu recebo nada de volta até meus tempos de código fora. alguém pode dar o meu código uma vez mais e deixe-me saber se estou fazendo nada de errado. Tenho tentou acessar o serviço via SoapUI e isso é bom, por isso deve ser algo no meu código CXF, mas eu simplesmente não sei o que!
Obrigado por qualquer ajuda
DepositImplService ss = new DepositImplService(WSDL_LOCATION,
SERVICE_NAME);
PortType port = ss.getPortTypePort();
Client client = ClientProxy.getClient(port);
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = conduit.getClient();
httpClientPolicy.setConnectionTimeout(30000);
httpClientPolicy.setReceiveTimeout(30000);
conduit.setClient(httpClientPolicy);
AuthorizationPolicy authPolicy = new AuthorizationPolicy();
authPolicy.setUserName("foo");
authPolicy.setPassword("bar");
conduit.setAuthorization(authPolicy);
TLSClientParameters parameters = new TLSClientParameters();
parameters.setSecureSocketProtocol("SSL");
conduit.setTlsClientParameters(parameters);
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
UploadRequestT doc = new UploadRequestT();
BufferedReader reader = new BufferedReader(new FileReader(new File(
"C:\\rawmessage.txt")));
String documentStr = "";
String currLine = "";
while ((currLine = reader.readLine()) != null) {
documentStr += currLine;
}
doc.setDoc(documentStr);
doc.setOwner("43");
port.upload(doc);
Solução
O que é o tempo de resposta de SoapUI?
Você executar este através de um monitor para ver que ele está enviando para o lugar certo?
Meu CXF olhares código como este:
PService phsService = new PService(url, SERVICE_NAME);
P p = phsService.getPHSPort();
LOG.info("Calling Web Service : getHs");
StringArray ar = p.getHs();
for (String hn: ar.getItem()) {
LOG.info("Calling : getHName : " + hn);
Dto nDto = p. getHName (hn);
// process the result
}
Este serviço leva cerca 90secs para retornar e funciona muito bem
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow