Newsgroup: it.comp.java
Titolo: SOAP e Proxy

Ciao a tutti. Sto tentando di far uscire da una rete universitaria, le 
chiamate a un web service con axis2. Ho provato sia con una connessione 
diretta sia impostando da codice l'utilizzo del proxy di sistema, ma in
ogni 
caso i tentativi sono fallimentari. Ho quindi sniffato la rete e ho notato
che 
il proxy ritorna un "continuation or non-http traffic". Temo che il proxy 
riconosca la chiamata SOAP come traffico non-http e quindi la blocchi. E' 
possibile fare qualcosa per risolvere il problema da parte del mio client? 
Grazie mille per l'aiuto.
M.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 il proxy ritorna un "continuation or non-http traffic". Temo che il proxy 
Quello significa semplicemente che quel pacchetto � uno dei successivi 
di uno di risposta. Se � una rete Ethernet, di solito l'MTU � 1500 
bytes, ovvero il pacchetto viene frammentato in tanti piccoli pacchetti 
da 1,46 kb ciascuno.
Piuttosto sarebbe da capire il contenuto. Se usi wireshark, con il tasto 
destro seleziona "Follow TCP stream" e vedi cosa risponde il proxy.
Enrico

 destro seleziona "Follow TCP stream" e vedi cosa risponde il proxy.
Il follow TCP stream mi restituisce: "...."
Da quel che ho potuto capire questo � il primo pacchetto HTTP che il
client 
spedisce al proxy. Ho un SYN, SYN-ACK, ACK, poi direttamente una
connessione 
HTTP con descrizione "continuation or non-http traffic" e infine
nient'altro.
Grazie ancora per l'aiuto.


 Grazie ancora per l'aiuto.
Problema nei filtri di cattura? Dovresti comunque vedere la tua 
richiesta nel TCP Stream.
Enrico

 richiesta nel TCP Stream.
Ho fatto un passo in dietro. Stavo infatti utilizzando semplicemente la 
direttiva System.setProperty("java.net.useSystemProxies", "true");
Adesso o provato nuovamente ad utilizzare:
System.getProperties().setProperty("http.proxySet", "true");
System.getProperties().setProperty("http.proxyHost", iSA.getHostName());
System.getProperties().setProperty("http.proxyPort", 
java.lang.String.valueOf(iSA.getPort()));
Il proxy viene sempre ricavato dalle impostazioni di sistema (variabile 
iSA).
Da wireshark con queste configurazioni vedo che il client richiede al
proxy 
un HTTP/XML e facendo un follow TCP stream mi ritorna "Unsupported Request 
Method and Protocol" (proxy Squid).
Ho provato poi nuovamente ad eseguire la connessione DIRECT e in questo
caso 
il client tenta di comunicare in HTTP/XML con il server del web service 
esterno alla rete universitaria, ma Squid ritorna lo stesso "Unsupported 
Request Method and Protocol".
A me pare che il proxy tagli la connessione in ogni caso. E possibile che 
sia un eccesso di restrizione?
M.


Ho trovato forse l'inghippo. Il proxy blocca la chiamata HTTP1.1 
application/soap+xml, ma le chiamate ai web services eseguite con HTTP1.0 
text/xml invece funzionano.
La prima chiamata quella in HTTP1.1 la eseguo tramite delle classi
generate da 
WSDL2Java Axis2, mentre la seconda chiamata la eseguo tramite delle classi
gi� 
compilate (Axis1.4).
Se questo � il problema... � possibile impostare WSDL2Java per generare 
chiamate in HTTP1.0 text/xml? Sto cercando nelle references, ma non trovo 
nulla.
Grazie,


Problema risolto. Per chi fosse interessato, ho aggiunto nella classe stub:
_serviceClient.getOptions().setProperty(org.apache.axis2.context.MessageContex
tConstants.HTTP_PROTOCOL_VERSION, 
org.apache.axis.transport.http.HTTPConstants.HEADER_PROTOCOL_10);
Axis2 infatti usa HTTP1.1 come protocollo standard.
Ciao!
