Portal e Portlet ClassLoader. Mancini Marco
|
|
|
- Giustino Giannini
- 9 anni fa
- Просмотров:
Транскрипт
1 Portal e Portlet ClassLoader Mancini Marco Project Manager, 3F Consulting s.r.l.
2 Classloading in liferay Tre differenti classpath: Global classpath, tutte le librerie presenti nella nostra JVM, e nelle lib e lib/ext del nostro tomcat. Portal classpath, tutte le librerie di liferay, nel caso ti tomcat tette le librerie dell applicazione ROOT posizionate nella cartella lib. Plugin classpath, tutte le librerie dei nostri plugin, «solitamente» posizionati nelle rispettive cartelle lib (portlet, hook, web).
3 Classloading in liferay
4 Classloading in liferay Svantaggi : Non poter accedere a tutte librerie del portale dai plugin; Il portale non può accedere alle librerie dei nostri plugin; Presenta di molti classloader; Vantaggi: Indipendenza delle librerie; Disaccoppiamento tra portale e plugin; Riduzione dei conflitti tra librerie
5 Classloading in liferay Alcune note: «Jsp» Hook plugin, utilizzano il classpath del portale perché sostituiscono le jsp originali del portale che vengono rinominati «nomejsp.portal.jsp». «liferay-plugin-package.properties» package.properties in questo file presente in ogni plugin per liferay è possibile specificare librerie presenti nell applicazione ROOT di tomcat. Queste librerie saranno caricate nel classpath del plugin senza essere presenti nella cartella lib del nostro progetto. Il war non conterrà le librerie ma sarà il portale a copiarle dentro il nostro plugin. «portal-impl.jar» questo sistema rende impossibile l accesso a tutte le classi che si trovano in questa libreria che non deve MAI essere inclusa nei nostri plugin.
6 Portal e Portlet Class Loader Util Classi di utilità : com.liferay.portal.kernel.util.portalclassloaderutil, per accedere al class loader del portale; com.liferay.portal.kernel.portlet.portletclassloaderutil, per accedere al class loader dei singoli portlet/plugin; com.liferay.portal.kernel.util.methodkey, l l til th classe che fornisce metodi per recuperare la rappresentazione serializzata di un metodo; com.liferay.portal.kernel.util.portletclassinvoker, classe che permette di invocare i «MethodKey» parametrizzati, su uno specifico portlet/plugin; com.liferay.portal.kernel.util PortalClassInvoker, classe che permette di invocare «MethodKey» direttamente con il class loader del portale; com.liferay.portal.kernel.util.classresolverutil, classe che mette a disposizione delle utilità per recuperare la «Class» di nostro interesse a partire dal classloader e dal suo nome.
7 Portal Class Loader Come utilizzare il Portal class loader di un plugin: sample-sign-in-portlet p Come il portale utilizza a sua volta il portal class loader per offrire funzionalità strutturate agli sviluppatori: Actionable dynamic query
8 Portal Class Loader Liferay sample-sign-in-portlet
9 Portal Class Loader: sample-sign-in-portlet Il sorgente è accessibile al seguente link Portlet che è utilizzato per effettuare il login sul portale; Portlet che utilizza il Portal Class Loader per accedere a classi che si trovano nel portal-impl.jar; IMPORTANTE Mai includere la libreria portal-impl.jar all interno di un custom plugin; I metodi accessibili dai plugin sono esposti dalla libreria portalservice.jar; Il portal-impl non è realizzato per essere incluso nei custom plugin e contiene tutte le classi core del portale.
10 Portal Class Loader: sample-sign-in-portlet All interno della jsp /docroot/view.jsp alla (riga 65): <% MethodKey methodkey = new MethodKey(ClassResolverUtil.resolveByPortalClassLoader( "com.liferay.portlet.login.util.loginutil"), "getlogin", HttpServletRequest.class, String.class, Company.class); String login = GetterUtil.getString((String)PortalClassInvoker.invoke(false, methodkey, request, "login", company)); boolean rememberme = ParamUtil.getBoolean(request, "rememberme"); %> La stringa login utilizzata per precaricare l input (riga 92): <aui:input name="login" style="width: 120px;" type="text" value="<%= HtmlUtil.escape(login) %>" />
11 Portal Class Loader: sample-sign-in-portlet All interno della jsp /docroot/view.jsp alla (riga 65): <% MethodKey methodkey = new MethodKey(ClassResolverUtil.resolveByPortalClassLoader( "com.liferay.portlet.login.util.loginutil"), "getlogin", HttpServletRequest.class, String.class, Company.class); String login = GetterUtil.getString((String)PortalClassInvoker.invoke(false, methodkey, request, "login", company)); boolean rememberme = ParamUtil.getBoolean(request, "rememberme"); %> La stringa login utilizzata per precaricare l input (riga 92): <aui:input name="login" style="width: 120px;" type="text" value="<%= HtmlUtil.escape(login) %>" />
12 Portal Class Loader: sample-sign-in-portlet All interno della jsp /docroot/view.jsp alla (riga 65): <% MethodKey methodkey = new MethodKey(ClassResolverUtil.resolveByPortalClassLoader( "com.liferay.portlet.login.util.loginutil"), "getlogin", HttpServletRequest.class, String.class, Company.class); String login = GetterUtil.getString((String)PortalClassInvoker.invoke(false, methodkey, request, "login", company)); boolean rememberme = ParamUtil.getBoolean(request, "rememberme"); %> La stringa login utilizzata per precaricare l input (riga 92): <aui:input name="login" style="width: 120px;" type="text" value="<%= HtmlUtil.escape(login) %>" />
13 Portal Class Loader: sample-sign-in-portlet Metodo utilizzato della classe ClassResolverUtil.java (riga 56) public class ClassResolverUtil { public static ti Class<?>? resolvebyportalclassloader(string lcl i classname) { } ClassLoader portalclassloader =PortalClassLoaderUtil.getClassLoader(); try { return Class.forName(className, false, portalclassloader); }catch (ClassNotFoundException cnfe) { } throw new RuntimeException(cnfe);
14 Portal Class Loader: sample-sign-in-portlet com.liferay.samplesignin.portlet.signinportlet (riga 43) String classname = "com.liferay.portlet.login.action.loginaction"; PortletConfig portletconfig = getportletconfig(); NoRedirectActionResponse noredirectactionresponse = new NoRedirectActionResponse(actionResponse); try { PortletActionInvoker.processAction( classname, portletconfig, actionrequest, noredirectactionresponse); } catch (Exception e) { _log.error(e, e); } PortletActionInvoker, classe di utilità per invocare «Action» di struts del portale da un plugin custom.
15 Portal Class Loader: sample-sign-in-portlet Il plugin invoca una action che si trova nel class loader del portale. public class PortletActionInvoker { public static ti void processaction( String classname, PortletConfig tc portletconfig, tc } ActionRequest actionrequest, ActionResponse actionresponse) throws Exception { } MethodKey methodkey = new MethodKey( ClassResolverUtil.resolveByPortalClassLoader(className), "processaction", new Class<?>[] { ClassResolverUtil.resolveByPortalClassLoader( "org.apache.struts.action.actionmapping"), ClassResolverUtil.resolveByPortalClassLoader( "org.apache.struts.action.actionform"), PortletConfig.class, ActionRequest.class, class ActionResponse.classclass }); PortalClassInvoker.invoke(true, methodkey, null, null, portletconfig, actionrequest, actionresponse);
16 Portal Class Loader Liferay Actionable Dynamic Query
17 Portal Class Loader: Actionable dynamic query Presenti dalla versione 6.2 del portale; Utilizzati dal portale all interno delle classi per l indicizzazione dei contenuti; Automaticamente generate dal service builder per le entità custom; Utilizzabile nei plugin custom per realizzare custom query: o o o o Su una specifica entità; Ottimizzate per un numero elevato di oggetti; Possibilità di specificare «condizioni» aggiuntive; Possibilità di eseguire operazioni per ogni riga ritornata dalla query. Si trovano nei service dei plugin custom e quindi possono essere utilizzate da altri plugin;
18 Portal Class Loader: Actionable dynamic query Actionable Dynamic Query di portale: Blog public abstract class BlogsEntryActionableDynamicQuery extends BaseActionableDynamicQuery { public BlogsEntryActionableDynamicQuery() throws SystemException { } setbaselocalservice(blogsentrylocalserviceutil.getservice()); setclass(blogsentry.class); setclassloader(portalclassloaderutil.getclassloader()); setprimarykeypropertyname("entryid"); Actionable Dynamic Query di plugin: public abstract class HDProductActionableDynamicQuery extends BaseActionableDynamicQuery{ public HDProductActionableDynamicQuery() throws SystemException { setbaselocalservice(hdproductlocalserviceutil.getservice()); setclass(hdproduct.class); } setclassloader( it.smc.liferay.helpdesk.service.clpserializer.class.getclassloader()); setprimarykeypropertyname("productid");
19 Portal Class Loader: Actionable dynamic query Metodo che utilizza la logica del class loader per generalizzare l utilizzo delle actionable dynamic query quindi utilizzabili da tutti i plugin. com.liferay.portal.kernel.dao.orm.baseactionabledynamicquery l l ti i (riga 49) public void performactions(long startprimarykey, long endprimarykey) throws PortalException, ti SystemException ti { DynamicQuery dynamicquery = DynamicQueryFactoryUtil.forClass( _clazz, _classloader); N.B. Il class loader può essere utilizzato per eseguire Dynamic Query anche su plugin esterni senza dover includere nessuna libreria all interno dei nostri plugin
20 Portal Class Loader: Actionable dynamic query Dove utilizzarle all interno dell indexer : protected void doreindex(string[] ids) throws Exception { } long companyid = GetterUtil.getLong(ids[0]); reindexhdproducts(companyid); protected t void reindexhdproducts(long d companyid) throws Exception { }
21 Portal Class Loader: Actionable dynamic query Come utilizzarle l all interno del nostro indexer: ActionableDynamicQuery y actionabledynamicquery y = new HDProductActionableDynamicQuery() protected void addcriteria(dynamicquery dynamicquery) { Property property p = PropertyFactoryUtil.forName("status"); y ( ) dynamicquery.add(property.eq(workflowconstants.status_approved)); protected void performaction(object object) throws PortalException { HDProduct hdproduct = (HDProduct)object; Document document = getdocument(hdproduct); adddocument(document); } }; actionabledynamicquery.setcompanyid(companyid); actionabledynamicquery.setsearchengineid(getsearchengineid()); actionabledynamicquery.performactions();
22 Portlet Class Loader Portlet Class Loader
23 Portlet Class Loader Possiamo accedere a classi e funzionalità residenti in altri plugin senza dover includere nessuna libreria o creare dipendenze tra plugin; Perché utilizzare il portlet class loader? Condividere funzionalità tra plugin senza creare dipendenza riducendo l accoppiamento. Risolvere il problema della dipendenza bidirezionale tra plugin. (alternativa al messagebus)
24 Portlet Class Loader: Servlet Context e tag lib Un Servlet Context è costituito da un gruppo di Servlet, pagine JSP o altre pagine web che condividono tra di loro risorse e dati. Il tag da utilizzare è «liferay-util:include» <%@ taglib uri=" prefix="liferay-util" %> <liferay-util:include page='/html/plugin_page.jsp' servletcontext="plugin PLUGIN_SERVLET_CONTEXT CONTEXT" > </liferay-util:include> PLUGIN_SERVLET_CONTEXT è il nome del plugin (per il nostro helpdesk è help_desk-portlet) In alternativa è possibile specificare il portlet id (questo solo per i plugin di tipo portlet): <%@ taglib uri=" prefix="liferay-util" %> <liferay-util:include page='/html/plugin_page.jsp' portletid="plugin_ PORTLET_ ID" > </liferay-util:include>
25 Portlet Class Loader Liferay chat-portlet
26 Portlet Class Loader: chat-portlet Il sorgente è accessibile al seguente link: Portlet utilizzato dal portale per gestire una chat tra gli utenti; Portlet che permette ad altri plugin di estenere le sue funzionalità utilizzando la logica del «Servlet Context»;
27 Portlet Class Loader: chat-portlet Il portlet ha una sua classe di utilità per registrare o deregistrare un plugin di estensione. package com.liferay.chat.util; public class ChatExtensionsUtil { public static void register(string servletcontextname, String path) { } public static void unregister(string servletcontextname) { }
28 Portlet Class Loader: chat-portlet All interno della «view.jsp» (riga 161) vengono caricate le jsp dei plugin registrati. <div class="chat-extensions hide"> <% %> <% %> </div> Map<String, String> extensions = ChatExtensionsUtil.getExtensions(); Set<String> servletcontextnames = extensions.keyset(); for (String servletcontextname : servletcontextnames) { String extensionpath = extensions.get(servletcontextname); ServletContext extensionservletcontext = ServletContextPool.get(servletContextName); t tp l t( l t tn <liferay-util:include page="<%= extensionpath %>" servletcontext="<%= extensionservletcontext %>" /> }
29 Portlet Class Loader help_desk_chat-hook
30 Portlet Class Loader: help_desk_chat-hook Plugin che utilizza il sistema di estensione della chat; Questo plugin a sua volta includerà una jsp presente in un terzo plugin «help_desk-portlet»; All interno del pannello della chat sarà visualizzato un nuovo pulsante con il numero dei clienti e dei fornitori. Al «click» del pulsante verrà aperto un popup con la portlet di help_desk.
31 Portlet Class Loader: help_desk_chat-hook
32 Portlet Class Loader: help_desk_chat-hook
33 Portlet Class Loader: help_desk_chat-hook
34 Portlet Class Loader: help_desk_chat-hook
35 Portlet Class Loader: help_desk_chat-hook Per registrarsi al plugin della chat è stata realizzata la seguente «startup action»: public class StartUpChat extends SimpleAction { public void run(string[] ids) throws ActionException { ClassLoader classloader = PortletClassLoaderUtil.getClassLoader("1_WAR_chatportlet"); MethodKey _registermethodkey; try { _registermethodkey = new MethodKey( } ClassResolverUtil.resolve("com.liferay.chat.util.ChatExtensionsUtil", l l lif h t Ch te t i Util" classloader), "register", String.class, String.class); PortletClassInvoker.invoke(false, "1_WAR_chatportlet", _registermethodkey, "help_ desk_ chat-hook", "/html/view.jsp"); catch (Exception e) {
36 Portlet Class Loader: help_desk_chat-hook Per registrarsi al plugin della chat è stata realizzata la seguente «startup action»: public class StartUpChat extends SimpleAction { public void run(string[] ids) throws ActionException { ClassLoader classloader = PortletClassLoaderUtil.getClassLoader("1_WAR_chatportlet"); MethodKey _registermethodkey; try { _registermethodkey = new MethodKey( } ClassResolverUtil.resolve("com.liferay.chat.util.ChatExtensionsUtil", l l lif h t Ch te t i Util" classloader), "register", String.class, String.class); PortletClassInvoker.invoke(false, "1_WAR_chatportlet", _registermethodkey, "help_ desk_ chat-hook", "/html/view.jsp"); catch (Exception e) {
37 Portlet Class Loader: help_desk_chat-hook Per registrarsi al plugin della chat è stata realizzata la seguente «startup action»: public class StartUpChat extends SimpleAction { public void run(string[] ids) throws ActionException { ClassLoader classloader = PortletClassLoaderUtil.getClassLoader("1_WAR_chatportlet"); MethodKey _registermethodkey; try { _registermethodkey = new MethodKey( } ClassResolverUtil.resolve("com.liferay.chat.util.ChatExtensionsUtil", l l lif h t Ch te t i Util" classloader), "register", String.class, String.class); PortletClassInvoker.invoke(false, "1_WAR_chatportlet", _registermethodkey, "help_ desk_ chat-hook", "/html/view.jsp"); catch (Exception e) {
38 Portlet Class Loader: help_desk_chat-hook Per registrarsi al plugin della chat è stata realizzata la seguente «startup action»: public class StartUpChat extends SimpleAction { public void run(string[] ids) throws ActionException { ClassLoader classloader = PortletClassLoaderUtil.getClassLoader("1_WAR_chatportlet"); MethodKey _registermethodkey; try { _registermethodkey = new MethodKey( } ClassResolverUtil.resolve("com.liferay.chat.util.ChatExtensionsUtil", l l lif h t Ch te t i Util" classloader), "register", String.class, String.class); PortletClassInvoker.invoke(false, "1_WAR_chatportlet", _registermethodkey, "help_ desk_ chat-hook", "/html/view.jsp"); catch (Exception e) {
39 Portlet Class Loader: help_desk_chat-hook Registrazione della startup action tramite hook su portal.properties. liferay-hook.xml <hook> <portal-properties>portal.properties</portal-properties> </hook> portal.properties application.startup.events=it.smc.liferay.helpdesk.chat.action.startupchat t t t it lif l h t tu t PortletKeys.java package it.smc.liferay.helpdesk.chat.util; public class PortletKeys extends com.liferay.portal.util.portletkeys{ public final static String HELP_DESK_SERVLET_CONTEXT = "help_desk-portlet"; }
40 Portlet Class Loader: help_desk_chat-hook «view.jsp» import="com.liferay.portal.kernel.portlet.liferaywindowstate"%> import="com.liferay.portal.kernel.servlet.servletcontextpool"%> portal import="it.smc.liferay.helpdesk.chat.util.portletkeys"%> include file="/html/init.jsp" %> <li id="chat-helpdesk" class="chat-helpdesk" > <div class="panel-trigger" panelid="chat-helpdesk"> <span class="trigger-name"> <liferay-util:include page='/admin/info_bar.jsp' </span> </div> </li> servletcontext="<%=servletcontextpool.get(portletkeys.help_desk_serv LET_CONTEXT) %>" > <liferay-util:param name="chatbar" value="true"></liferay- util:param> </liferay-util:include>
41 Portlet Class Loader: help_desk_chat-hook «view.jsp» <liferay-portlet:renderurl var="chaturl" portletname="1_war_help_deskportlet" windowstate="<%=liferaywindowstate.pop_up.tostring() %>"> </liferay-portlet:renderurl> t <script> AUI().ready( function(a) { A.one('.chat-tabs').insert(A.one('#chat-helpdesk')); A.one('#chat-helpdesk').on('click', function(event) { Liferay.Util.openWindow({ dialog: { centered: true, modal: true }, id: '<portlet:namespace/>dialoghelpdesk', title: '<liferay-ui:message key="help-desk" />', uri: '<%=chaturl.tostring()%>' t }); }); } ); </script>
42 Portlet Class Loader: help_desk_chat-hook «info_bar.jsp» import="com.liferay.portal.kernel.dao.orm.restrictionsfactoryutil"%> import="com.liferay.portal.kernel.dao.orm.dynamicquery"%> import="it.smc.liferay.helpdesk.service.hdcustomerlocalserviceutil"%> h l d k i t L ls i <%@ include file="/init.jsp" %> <% long countcustomer = ; long countproducts = ; boolean chatbar = Boolean.parseBoolean(ParamUtil.get(request, "chatbar", "false")); %> <c:if test="<%=!chatbar %>"> <h2><liferay-ui:message key="information" /> </h2> </c:if> <div style='<%=chatbar?"display:inline-block;":""%>'> <liferay-ui:message key="customers" /> <span class="badge badge-info"> <%=countcustomer %> </span> </div> <div style='<%=chatbar?"display:inline-block;":""%>'> <liferay-ui:message key="products" /> <span class="badge badge-info"> <%=countproducts %> </span> </div>
43 Portlet Class Loader: help_desk_chat-hook
44 CASO REALE: MAPIT NOW
45 Mapit now Mapit Now è un «insieme di plugin» per gestire la geolocalizzazione degli asset su mappa (google, osm, bing, ). «Portlet Class Loader» per la registrazione dei plugin; «Servlet context» per l estensione della mappa tramite jsp contenute in altri at plugin; pug La mappa è realizzata come componente alloy-ui; Utilizzo del framework «open layer»;
46 Mapit now
47 Mapit now
48 Mapit now
49 Mapit now
50 GRAZIE Mancini _ 3f
1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages
1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages Le JSP DynPages sono un utile strumento, fornito da SAP Netweaver, per una gestione più evoluta di event handling e session
Corso di programmazione di sistemi mobile 1. Android. Google Cloud Messaging
Corso di programmazione di sistemi mobile 1 Android Google Cloud Messaging Corso di programmazione di sistemi mobile 2 Cos è Il Google Cloud Messaging o GCM è un servizio di Google che permette di inviare
Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»
Scaletta Estensioni UML per il Web Michele Zennaro 14-05-2004 Le applicazioni web Scopo di un estensione UML per il web Due punti di vista Uno più astratto Uno più vicino ai file fisici conclusivo Commenti
Editing e gestione delle views per il modulo Landing Page Espositore
Editing e gestione delle views per il modulo Landing Page Espositore Revisione 1.0 29 Marzo 2011 Editing e gestione delle views per il modulo Landing Page Espositori Per modificare il comportamento dei
SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.
Progetto SITI Manuale Utente SITI-Reports ABACO S.r.l. ABACO S.r.l. C.so Umberto, 43 46100 Mantova (Italy) Tel +39 376 222181 Fax +39 376 222182 www.abacogroup.eu e-mail : [email protected] 02/03/2010
Architetture Web: un ripasso
Architetture Web: un ripasso Pubblicazione dinamica di contenuti. Come si fa? CGI Java Servlet Server-side scripting e librerie di tag JSP Tag eseguiti lato server Revisione critica di HTTP HTTP non prevede
LA GESTIONE DELLE VISITE CLIENTI VIA WEB
LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici
Come utilizzare il nuovo HelpDesk Maggioli Informatica
Come utilizzare il nuovo HelpDesk Maggioli Informatica Sommario 1. Home... 2 2. Tickets... 3 3. Nuove richieste... 3 4. Knowledge Base... 5 5. Documenti... 5 6. Referenti... 6 7. Come modificare e/o resettare
IBM SPSS Statistics - Essentials for R- Istruzioni di installazione per Windows
IBM SPSS Statistics - ssentials for R- Istruzioni di installazione per Windows Le istruzioni riportate di seguito sono relative all installazione di IBM SPSS Statistics - ssentials for R su sistemi operativi
MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY
MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY 1 Sommario 1. INTRODUZIONE... 3 2. GET METAIO... 4 2.1. PREREQUISITI... 4 2.2. INTALLAZIONE... 4 2.3. PROGETTI ESEMPLIFICATIVI... 4 3. USARE
Realizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida
Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare
Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server
Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette
GUIDA ALL USO DEL PANNELLO DI GESTIONE SITO WEB
GUIDA ALL USO DEL PANNELLO DI GESTIONE SITO WEB Copyright 2014 Wolters Kluwer Italia Srl 1 Sommario 1 Come accedere al Pannello di gestione... 4 2 del Pannello di gestione del sito web... 5 3 delle sezioni...
Sommario 1. Home... 1 2. Tickets... 2 3. Nuove richieste... 3 4. Knowledge Base... 4 5. Documenti... 5 6. Referenti... 5
Come utilizzare il nuovo Helpdesk Maggioli Informatica Sommario 1. Home... 1 2. Tickets... 2 3. Nuove richieste... 3 4. Knowledge Base... 4 5. Documenti... 5 6. Referenti... 5 Attenzione, il manuale spiega
Panoramica: che cosa è necessario
Scheda 02 L installazione dell SDK G IOVANNI PULITI Panoramica: che cosa è necessario Per poter lavorare con applicazioni Java o crearne di nuove, il programmatore deve disporre di un ambiente di sviluppo
Il Web-Service SDMX dell ISTAT
Il Web-Service SDMX dell ISTAT Versione: 1.0.0 Data: 05/06/2014 Autore: Approvato da: Modifiche Versione Modifiche Autore Data Indice dei contenuti 1 Introduzione... 4 2 Creazione dell esempio d uso...
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
Java Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
FtpZone Guida all uso
FtpZone Guida all uso La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente un login e password
SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
MANUALE D USO DELLA PIATTAFORMA ITCMS
MANUALE D USO DELLA PIATTAFORMA ITCMS MANULE D USO INDICE 1. INTRODUZIONE... 2 2. ACCEDERE ALLA GESTIONE DEI CONTENUTI... 3 3. GESTIONE DEI CONTENUTI DI TIPO TESTUALE... 4 3.1 Editor... 4 3.2 Import di
SAPIENZA Università di Roma, Facoltà di Ingegneria
SAPIENZA Università di Roma, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE Laurea in Ingegneria Informatica Prof. E.Casalicchio A.A. 2008/09 QUARTA PARTE: Soluzioni Esercizi 13-23 Soluzione
Programmazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
GateManager. 1 Indice. [email protected]
1 Indice 1 Indice... 1 2 Introduzione... 2 3 Cosa vi serve per cominciare... 2 4 La Console di amministrazione... 2 5 Avviare la Console di amministrazione... 3 6 Come connettersi alla Console... 3 7 Creare
Programmazione server-side: Java Servlet
Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos
Java Web Services. Uso di Eclipse e Apache Axis
Java Web Services Uso di Eclipse e Apache Axis 1 Gli strumenti utili per iniziare Axis (Web Service tool) Eclipse (IDE di sviluppo) Tomcat (servlet/jsp container) N.B. Eclipse e Tomcat possono essere sostituiti
Test di unità con JUnit4
Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");
Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
SWIM v2 Design Document
PROGETTO DI INGEGNERIA DEL SOFTWARE 2 SWIM v2 DD Design Document Matteo Danelli Daniel Cantoni 22 Dicembre 2012 1 Indice Progettazione concettuale Modello ER Entità e relazioni nel dettaglio User Feedback
Il Web-Service SDMX dell ISTAT
Il Web-Service SDMX dell ISTAT Versione: 1.0.0 Data: 26/06/2014 Autore: Approvato da: Modifiche Versione Modifiche Autore Data Indice dei contenuti 1 Introduzione... 4 2 Esempio d uso... 5 2.1 Riferimento
Siti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico
MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...
IBM SPSS Statistics - Essentials for R - Istruzioni diinstallazione per Mac OS
IBM SPSS Statistics - ssentials for R - Istruzioni diinstallazione per Mac OS IBM SPSS Statistics - ssentials for R- Istruzioni di installazione per Mac OS Le istruzioni riportate di seguito sono relative
Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu [email protected] Reflection in Java 1 Reflection Riflessione
Guida iscrizione Community. istruzione.social.marche.it
Guida iscrizione Community istruzione.social.marche.it 1. Collegarsi con un browser all indirizzo : http://istruzione.social.marche.it 2. Viene visualizzata la seguente schermata di cohesion : 3. Se siete
Internet Explorer 6. Gestione cookie
Internet Explorer 6 Internet Explorer 6 è una raccolta di tecnologie di base di Windows XP Home Edition e Windows XP Professional che garantisce riservatezza, affidabilità, flessibilità e libertà durante
Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI
ORDINAMENTO DEI DATI Quando si ordina un elenco (ovvero una serie di righe contenenti dati correlati), le righe sono ridisposte in base al contenuto di una colonna specificata. Distinguiamo due tipi di
Il salvataggio sui pc locali è consentito solo per il tempo strettamente necessario al loro utilizzo.
Istruzioni per l accesso Server del Gruppo di Biofisica È stato messo in funzione il server per i file degli utenti del gruppo di Biofisica. Esso sarà utilizzato per memorizzare i file degli utenti del
Manuale LiveBox APPLICAZIONE ANDROID. http://www.liveboxcloud.com
2014 Manuale LiveBox APPLICAZIONE ANDROID http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi garanzia
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
FPf per Windows 3.1. Guida all uso
FPf per Windows 3.1 Guida all uso 3 Configurazione di una rete locale Versione 1.0 del 18/05/2004 Guida 03 ver 02.doc Pagina 1 Scenario di riferimento In figura è mostrata una possibile soluzione di rete
IBM SPSS Statistics - Essentials for R- Istruzioni di installazione per Mac OS
IBM SPSS Statistics - ssentials for R- Istruzioni di installazione per Mac OS Le istruzioni riportate di seguito sono relative all installazione di IBM SPSS Statistics - ssentials for R su sistemi operativi
GESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
XML e PHP. Gestire XML con PHP. Appendice
Appendice XML e PHP Tra tutti i linguaggi di programmazione esistenti PHP è tra quelli che meglio si adattano all elaborazione di documenti XML. PHP è un linguaggio di programmazione che consente di arricchire
Progettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli [email protected] 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
Tener traccia del client
Tener traccia del client Raramente un applicazione web è costituita da una singola pagina (risorsa). E utile quindi tener traccia dei client che si collegano per rendere più semplice lo sviluppo dell applicazione.
NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0
Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2
Il software di gestione immobiliare più facile da usare. Modulo Web v5.2. www.gestim.it
Il software di gestione immobiliare più facile da usare Modulo Web v5.2 www.gestim.it Introduzione Il Modulo Web è un componente di Gestim che permette di pubblicare in automatico gli annunci sul sito
UML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
APPLICAZIONE DI UN COMPORTAMENTO A UN'IMMAGINE E TESTO CREAZIONE GALLERIA IMMAGINI
dispense APPLICAZIONE DI UN COMPORTAMENTO A UN'IMMAGINE E TESTO CREAZIONE GALLERIA IMMAGINI Attributo target / destinazione L'attributo target specifica dove deve essere aperta la pagina collegata. _top
RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE
RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE Mameli Salvatore-M01/000153 SOMMARIO 1 INTRODUZIONE 1.1 Project Overview 1.2 Ambiente del prodotto 1.3 Document Overview 2 - PROGETTAZIONE 2.1
Guida al sistema. Dott. Enea Belloni
Sistema Gestionale Voucher Guida al sistema Dott. Enea Belloni Sommario della presentazione Il sistema informatico per la gestione delle domande L utente presentatore: diritti e responsabilità La pagina
Spring WS Sviluppare WebService in Java
Spring WS Sviluppare WebService in Java 1.1 Introduzione Nell ambito della programmazione Java è particolarmente utile avere una certa familiarità con i WebService e la tecnologia che li supporta. In particolare
Plugin di integrazione con Wordpress
Plugin di integrazione con Wordpress Requisiti: Wordpress 3.5 o superiori Un account valido sulla piattaforma 4Dem Accesso ftp alla cartella plugins di Wordpress 4Dem.it - Plugin di integrazione con Wordpress
Visual Basic.NET La Gestione degli Errori di Federico BARBATI
Generalità Visual Basic.NET La Gestione degli Errori di Federico BARBATI La gestione degli errori, è una parte fondamentale di un codice ben progettato. Fino ad oggi, gli errori nelle applicazioni scritte
SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE
SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE S O. S E. B I. P R O D O T T I E S E R V I Z I P E R I B E N I C U L T U R A L I So.Se.Bi. s.r.l. - via dell Artigianato, 9-09122 Cagliari Tel. 070 / 2110311
Il sistema di pubblicazione di informazioni didattiche sul sito di Ateneo: guida e regole d uso per i docenti.
Il sistema di pubblicazione di informazioni didattiche sul sito di Ateneo: guida e regole d uso per i docenti. Il Centro di Calcolo ha predisposto uno strumento online di facile uso che consente ai docenti
Sage Start Archivio file Guida. Dalla versione 2015 09.10.2014
Sage Start Archivio file Guida Dalla versione 2015 09.10.2014 Sommario 1.0 Introduzione 3 1.1 Moduli con archivio file 3 1.2 Informazioni generali 3 1.2.1 Cancellazione di record di dati 4 1.2.2 Duplicazione
Manuale LiveBox APPLICAZIONE IOS. http://www.liveboxcloud.com
2014 Manuale LiveBox APPLICAZIONE IOS http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi garanzia espressa
COMUNI-CHIAMO S.R.L. Via San Martino n. 26/1- Monte San Pietro P.IVA, C.F. e numero di iscrizione alla Camera di Commercio di Bologna 03160171207
COMUNI-CHIAMO S.R.L. Via San Martino n. 26/1- Monte San Pietro P.IVA, C.F. e numero di iscrizione alla Camera di Commercio di Bologna 03160171207 Capitale sociale. 10.000,00 i.v. Sommario 1. Accedere alla
Manuale utente Gestione Utenti Portale Albo
GUAW_ManualeUtente_GestioneUtentiPortaleAlboManualeUtente_GestioneUtentiPortaleAlbo.docx Ministero delle Infrastrutture e dei Trasporti DIPARTIMENTO PER I TRASPORTI, LA NAVIGAZIONE ED I SISTEMI INFORMATIVI
Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).
Dropbox di classe Lo scopo del servizio Dropbox di classe è quello di far conoscere ai docenti del nostro istituto il funzionamento di un sistema di Cloud Storage, pronto e facile da usare, per esplorare
Java: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
Manuale LiveBox APPLICAZIONE ANDROID. http://www.liveboxcloud.com
2014 Manuale LiveBox APPLICAZIONE ANDROID http://www.liveboxcloud.com LiveBox Srl non rilascia dichiarazioni o garanzie in merito al contenuto o uso di questa documentazione e declina qualsiasi garanzia
Corso Corso di di programmazione di di sistemi mobile 1 1. Android Laboratorio. Primo Progetto, Toast
Corso Corso di di programmazione di di sistemi mobile 1 1 Android Laboratorio Primo Progetto, Toast Corso Corso di di programmazione di di sistemi mobile 2 2 Android Studio Per realizzare le nostre applicazioni
Gecom Paghe. Comunicazione per ricezione telematica dati 730-4. ( Rif. News Tecnica del 14/03/2014 )
Gecom Paghe Comunicazione per ricezione telematica dati 730-4 ( Rif. News Tecnica del 14/03/2014 ) TE7304 2 / 16 INDICE Comunicazione per la ricezione in via telematica dei dati relativi ai modelli 730-4...
Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2006-07 Secondo Compitino 21 Dicembre 2006 Si noti che le soluzioni ai quesiti saranno considerate
13. Chain of Responsibility
Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire
Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:
Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente
Main System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0
11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE
RMI. Java RMI RMI. G. Prencipe [email protected]
Java Remote Method Invocation -- RMI G. Prencipe [email protected] RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti
1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org
1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org Applicazione J2EE sul SAP WAS con SAP NWDS. Il SAP Web Application Server fornisce un framework integrato per lo sviluppo e l
La geolocalizzazione
La geolocalizzazione La maggior parte dei dispositivi mobili di ultima generazione è dotata di un antenna GPS che permette di conoscere, in breve tempo e con la precisione di qualche metro, la propria
Omnia Web Timesheet. Manuale utente
Omnia Web Timesheet Manuale utente Revisioni Data Versione Autore Note 01.03.2011 1.0 Alberto Fedrici Prima release 08.05.2010 1.1 Alberto Fedrici Funzionalità inserimento note Indice 1. Introduzione...
BILANCI E ANALISI DEI DATI
Release 5.20 Manuale Operativo BILANCI E ANALISI DEI DATI Libro Inventari La gestione del libro inventari consente di effettuare l elaborazione e la stampa del libro inventari. Può essere composto da:
flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita... 6
istruzioni per l inserimento di una richiesta on line di prodotti speciali flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita...
Studi di Settore. Nota Operativa 22/4/2013
Nota Operativa Studi di Settore 22/4/2013 Sommario Valutazione casistiche... 2 Errore di connessione... 2 Sistema operativo non aggiornato... 2 File non installato client... 2 File non installato server...
GUIDA ALL USO DELL AREA RISERVATA
GUA ALL USO DELL AREA RISERVATA Copyright 2012 Wolters Kluwer Italia Srl 1 Sommario 1 Come accedere all Area Riservata... 4 2 del Pannello di gestione del sito web... 5 3 delle sezioni... 8 3.1 - Gestione
Capitolo 4 Pianificazione e Sviluppo di Web Part
Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,
Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet
Java Server Pages (JSP) Introduzione alle JSP Linguaggio di scripting lato server HTML-embedded Una pagina JSP contiene sia HTML sia codice Il client effettua la richiesta per la pagina JSP La parte HTML
PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1
PROGRAMMA GESTIONE TURNI MANUALE UTENTE INDICE 1 PREMESSA 3 2 COMANDI COMUNI 3 3 SEDI 3 4 FESTIVITÀ 4 5 PERIODI TURNI 4 6 COD. TURNI 6 7 TURNI SPORTIVI 9 8 COD. EQUIPAGGI 9 9 DISPONIBILITÀ 10 10 INDISPONIBILITÀ
