Salve gente,
cercherò di esporre il mio problema nella maniera più semplice possibile.
Sto progettando un web service molto semplice che però mi sta dando dei problemi che non riesco a risolvere e uso Tomcat e Axis.
Il mio webservice ha l' architettura seguente:
CheckClient -------------------------------->HandlerLogger-------->ServerCheck
Tra client e server ho un itermediario sulla richiesta <requestFlow> che prende un messaggio soap dal client indirizzato al server con in un SOAPHeaderElement inserita una login (passata dall'utente). L'HandlerLogger verifica l'esistenza di questa login in un db remoto e spedisce un AxisFault nel caso il "logger" dà esito negativo altrimenti preleva l'header e spedisce il restante messaggio al server che tramite un metodo (remoto) in modalità RPC restituisce un oggetto presonalizzato Statistiche che è registrato come nuovo TypeMapping lato client nel codice dell'applicazione e lato server tramite deploy. Fin qua tutto ok...
Il problema me lo da la versione SOAP scelta per i messaggi scambiati.
Ho notato che l'intermediario agisce solo se il messaggio SOAP creato dal client ha una versione 1.2 e quindi esplicitamente creo il messaggio nel seguente modo:
Però, quando il messaggio arriva all'ultimateReceiver lo processa correttamente ma nell'inviare la risposta come oggetto Statistiche al client, lancia l'eccezione "Premature end of file". Gia da tempo avevo notato che questo tipo di eccezione viene lanciata quando si imposta esplicitamente la versione SOAP 1.2 (anche perchè mi sembra di ricordare che in certi caso non sia supportata).codice:SOAPEnvelope soapEnv = new SOAPEnvelope(SOAPConstants.SOAP12_CONSTANTS);
Per questa ragione allora ho provato a non settare più la versione del messaggio SOAP nella sua creazione (che di default dovrebbe essere la 1.1)
infatti il server lo processa e correttamente restituisce un oggetto Statistiche al client.codice:SOAPEnvelope soapEnv = new SOAPEnvelope();
Ma il problema ora è che l'handler non fa niente, non agisce.
Come se non riconoscesse l'header a lui indirizzato (nonostante fosse settato correttamente il ruolo).![]()
Qualcuno ha avuto problemi di questo genere?
Se necessario posterò il codice...

Rispondi quotando