Domanda

Ho il seguente codice che sto cercando di utilizzare per accedere a un servizio Web tramite HTTPS utilizzando Apache CXF. Ma ogni volta che il mio messaggio esce, non ricevo nulla fino al timeout del mio codice. Qualcuno può dare una volta il mio codice e farmi sapere se sto facendo qualcosa di sbagliato. Ho provato ad accedere al servizio tramite SoapUI e va bene, quindi deve essere qualcosa nel mio codice CXF ma non so proprio cosa!

Grazie per l'aiuto

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);
È stato utile?

Soluzione

Qual è il tempo di risposta di SoapUI?

Hai eseguito questo attraverso un monitor per vedere che sta inviando nel posto giusto?

Il mio codice CXF è simile al seguente:

      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   

      }

Questo servizio impiega circa 90 secondi per tornare e funziona bene

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top