Archivi categoria: SPRING BOOT

RestTemplate – Gestire contenuto Multipart-mixed

In questi giorni mi sono trovato a dover gestire il contenuto di servizio rest che a seguito di una chiamata GET restituiva un content di tipo multipart-mixed. Nel progetto precedente usavo jersey che gestiva in mod del tutto trasparente questo tipo di chiamata, in questo progetto avevo una dipendenza da Spring ed ero vincolato ad usare la classe RestTemplate, peccato che per questa template la lettura di questo tipo di contenuto non fosse così agevole.

Per risolvere ho letto la risposta come byte[] e poi ho usato la classe org.apache.commons.fileupload.MultipartStream presente nel in Commons FileUpload per leggere il contenuto da un byte[], scartare gli header e leggere solo il file di mio interesse

SPRING-BOOT – CONFIGURARE PROXY e CERTIFICATI PER SERVIZI SOAP

Spring ws è un pacchetto messo a disposizione da Spring per gestire agevolmente la comunicazione tra servizi SOAP. La libreria consente di configurare agevolmente un server soap che riceve chiamate nel rispetto di uno schema definito dall’utente. Per maggiori informazioni rimando all’ottimo tutorial realizzato dai ragazzi di spring e che trovate qui

Inoltre la libreria consente di configurare agevolmente un client per poter invocare dei servizi esposti su un altro server e sulla configurazione base rimando sempre al tutorial di spring che trovate qui.

In questo articolo approfondiamo come configurare il client che gira all’interno di una rete con proxy e che richiede lo scambio dei certificati con il server su cui sono esposti i servizi soa.

Il nostro client si trova in una rete con 2 livelli di sicurezza: un proxy che regola il traffico verso l’esterno della nostra rete e un server che accetta chiamate crittografate con un certificato associato.

Per fare questo dobbiamo configurare il messagesender presente nella classe WebServiceTemplate con una istanza della classe org.springframework.ws.transport.http.HttpComponentsMessageSender che utilizza la classe Apache HttpClient per l’invio di Post.

Nella classe client sto settando il message sender tramite un metodo seguente in configuro i tempi di timeout e a questo passo il client httoClient dove effettivamente configuro il proxy e il certificato

Definisco il contesto SSL fornendo il keystore e il truststore. Definisco il proxy fornendo host e porta e infine creo il client usando la classe HttpClientBuilder.

Alla prossima

SPRING-BOOT: java.io.FileNotFoundException: class path resource

Spring boot ci da diversi metodi per accedere alle risorse disponibili. Una delle più semplici prevede l’uso della annotion @Value e la classe Resouse

Nell’esempio sopra riportato sto definendo un file tipologie.json disponibile nel classpath dentro la cartella json e posso accedervi usando i meto della classe Resource.

Fin qui tutto bene, se lanciamo con maven la direttiva spring-boot: run il sistema funziona correttamente ma se rilasciamo il nostro applicativo in formato jar ecco che otteniamo questa eccezione quando cerchiamo di accedere al file

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

java.io.FileNotFoundException: class path resource [json/tipologie.json] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/nome,.jar/BOOT-INF/classes!/json/tipologie.json

Per risolvere il problema occorre leggere il dato usando il metodo getInputStrean che mi garantisce la lettura del file anche dentro il jar

InputStream inputStream = tipologicheJson.getInputStream();