{"id":111,"date":"2014-06-18T23:52:20","date_gmt":"2014-06-18T21:52:20","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=111"},"modified":"2014-06-19T00:23:21","modified_gmt":"2014-06-18T22:23:21","slug":"spring-ws-tutorial-6-usare-gli-interceptor","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/spring-ws-tutorial-6-usare-gli-interceptor\/","title":{"rendered":"SPRING WS &#8211; TUTORIAL 6 &#8211; USARE GLI INTERCEPTOR"},"content":{"rendered":"<p style=\"color: #0d293f;\">In questo articolo vedremo come poter intercettare le richieste di servizio per effettuare le operazioni prima e dopo l&#8217;esecuzione dell&#8217;endpoint.<\/p>\n<p style=\"color: #0d293f;\">Fondamentale l&#8217;interceptor ci permette di:<\/p>\n<ul style=\"color: #143c5d;\">\n<li>loggare le richieste e le risposte inviate<\/li>\n<li>applicare dei meccanismi di sicurezza alle richieste pervenute<\/li>\n<li>gestire i fault di sistema<\/li>\n<\/ul>\n<div style=\"color: #0d293f;\">Per definire un interceptor occorre implementare l&#8217;interfaccia EndpointInterceptot che presenta i seguenti metodi:<\/div>\n<div style=\"color: #0d293f;\">\n<ul style=\"color: #143c5d;\">\n<li>handleRequest<\/li>\n<li>handleResponse<\/li>\n<li>handleFault<\/li>\n<\/ul>\n<\/div>\n<div style=\"color: #0d293f;\">Il metodo handleRequest viene invocato prima dell&#8217;esecuzione dell&#8217;endpoint e il suo utilizzo principale \u00e8 quello di bloccare l&#8217;esecuzione di un servizio.<\/div>\n<div style=\"color: #0d293f;\">Il metodo handleResponse viene invocato dopo l&#8217;esecuzione dell&#8217;endpoint e il sul utilizzo principale \u00e8 quello di elaborare la risposta, magari aggiungendo attributi.<\/div>\n<div style=\"color: #0d293f;\">Il metodo handleFault viene invocato dopo l&#8217;esecuzione di un fault con finalit\u00e0 analoghe a quelle del metodo handleResponse.<\/div>\n<div style=\"color: #0d293f;\">Per chi non avesse particolari esigenze Spring offre gi\u00e0 alcune implementazioni di interceptor:<\/div>\n<div style=\"color: #0d293f;\"><\/div>\n<div style=\"color: #0d293f;\">\n<ul style=\"color: #143c5d;\">\n<li>PayloadLoggingInterceptor<\/li>\n<li>PayloadValidatingInterceptor<\/li>\n<li>PayloadTransformingInterceptor<\/li>\n<\/ul>\n<div>Il PayloadLoggingInterceptor permette di loggare le richieste e le risposte.<\/div>\n<div>Il\u00a0PayloadValidatingInterceptor valida le richieste e le risposte in base ad uno schema xsd indicato nelle sue properties.<\/div>\n<div>Il\u00a0PayloadTransformingInterceptor effettua una transformazione delle richieste e delle risposte basate su XSLT. Viene usato quando il server gestisce pi\u00f9 versioni dello stesso servizio.<\/div>\n<\/div>\n<p style=\"color: #0d293f;\">Nel nostro progetto applichiamo un logger delle richieste e delle risposte e un validatore, ottenendo una configurazione di questo tipo.<\/p>\n<pre class=\"lang:default decode:true crayon-selected\">&lt;bean \r\nclass=\"org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping\"&gt;\r\n&lt;property name=\"mappings\"&gt;\r\n        &lt;props&gt;\r\n            &lt;prop key=\"{http:\/\/www.example.org\/schema}RicercaLibroRequest\"&gt;ricercaLibroEndpoint&lt;\/prop&gt;\r\n        &lt;\/props&gt;\r\n    &lt;\/property&gt;\r\n    &lt;property name=\"interceptors\"&gt;\r\n\t    &lt;list&gt;\r\n              &lt;ref bean=\"loggingInterceptor\"\/&gt;\r\n              &lt;ref bean=\"validatingInterceptor\"\/&gt;\r\n          &lt;\/list&gt;\r\n        &lt;\/property&gt;\r\n    &lt;\/bean&gt;\r\n&lt;bean id=\"loggingInterceptor\"  \r\n      class=\"org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor\"\/&gt;\r\n\r\n&lt;bean id=\"validatingInterceptor\" \r\n      class=\"org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor\"&gt;\r\n    &lt;property name=\"schema\" value=\"classpath:schema.xsd\"\/&gt;\r\n    &lt;property name=\"validateRequest\" value=\"true\"\/&gt;\r\n    &lt;property name=\"validateResponse\" value=\"true\"\/&gt;\r\n&lt;\/bean&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo vedremo come poter intercettare le richieste di servizio per effettuare le operazioni prima e dopo l&#8217;esecuzione dell&#8217;endpoint. Fondamentale l&#8217;interceptor ci permette di: loggare le richieste e le risposte inviate applicare dei meccanismi di sicurezza alle richieste pervenute gestire i fault di sistema Per definire un interceptor occorre implementare l&#8217;interfaccia EndpointInterceptot che presenta &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/spring-ws-tutorial-6-usare-gli-interceptor\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">SPRING WS &#8211; TUTORIAL 6 &#8211; USARE GLI INTERCEPTOR<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20],"tags":[21,22],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/111"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=111"}],"version-history":[{"count":2,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/111\/revisions"}],"predecessor-version":[{"id":133,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/111\/revisions\/133"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=111"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}