Formation ESUP Portail Cours 4



Documents pareils
Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

TP1 : Initiation à Java et Eclipse

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Java 7 Les fondamentaux du langage Java

TP1. Outils Java Eléments de correction

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Initiation à JAVA et à la programmation objet.

La base de données XML exist. A. Belaïd

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Systeme d'exploitation

Création d un service web avec NetBeans 5.5 et SJAS 9

Java DataBaseConnectivity

Alfstore workflow framework Spécification technique

Installation du package esup-portail Version uportal-2.5.x-esup

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

TP1 : Initiation à Java et Eclipse

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Java Licence professionnelle CISII,

as Architecture des Systèmes d Information

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

OpenPaaS Le réseau social d'entreprise

Web Tier : déploiement de servlets

Remote Method Invocation (RMI)

Introduction aux «Services Web»

Généralités sur le Langage Java et éléments syntaxiques.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

BOUCHARD Nicolas. GENTILE Pierre

Tutoriel d installation de Hibernate avec Eclipse

Serveur d'archivage 2007 Installation et utilisation de la BD exist

7.0 Guide de la solution Portable sans fil

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Approche Contract First

Programmation par les Objets en Java

Environnements de développement (intégrés)

contact@nqicorp.com - Web :

RMI le langage Java XII-1 JMF

Reporting Services - Administration

Date: 22/10/12 Version: 3.2

Sage CRM. 7.2 Guide de Portail Client

1. Installation d'un serveur d'application JBoss:

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Application web de gestion de comptes en banques

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

JavaServer Pages (JSP)

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

PROCEDURE D'INSTALLATION OPENREPORTS

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Maîtriser le menu contextuel dans un OfficeBean

BASE DE DONNÉES XML NATIVE

Compte Rendu d intégration d application

TP au menu «UI ANDROID»

Bases Java - Eclipse / Netbeans

Open Source Job Scheduler. Installation(s)

4. SERVICES WEB REST 46

Le service d'accès à distance aux bases de données du SCD de Paris 10 Nanterre

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Le stockage local de données en HTML5

Construire des plug-ins pour SAS Management Console SAS 9.1

HAYLEM Technologies Inc.

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Chapitre 2. Classes et objets

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

ACTIVITÉ DE PROGRAMMATION

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Sage CRM. Sage CRM 7.3 Guide du portable

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

DirXML License Auditing Tool version Guide de l'utilisateur

A. Architecture du serveur Tomcat 6

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Formation. Module WEB 4.1. Support de cours

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Remote Method Invocation Les classes implémentant Serializable

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Architecture Orientée Service, JSON et API REST

Java Naming and Directory Interface

Documentation CAS à destination des éditeurs

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Projet Java EE Approfondi

Nuxeo 5.4 : les nouveautés

Quick Start Installation de MDweb version 2.3

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Plateforme PAYZEN. Définition de Web-services

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

Procédure d installation d AMESim 4.3.0

Formation à esup-helpdesk

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

JOnAS Day 5.1. Outils de développements

CA ARCserve Backup Patch Manager pour Windows

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

Chapitre 1 Windows Server

SOAP Concepts Application à Glassfish

Une introduction à la technologie EJB (2/3)

Transcription:

Formation ESUP Portail Cours 4 http://www.esup-portail.org 1

Plan Prérequis Outils Normes Esup portail Canal uportal Publication d'un canal Web services 2

Prérequis Java Ant XML XSL/XSLT 3

Outils http://www.esup-portail.org/consortium/espace/normes_1c/tech/build/index. build.properties build.xml 4

build.properties Les informations sur le projet app.name.home=cmoncanal app.version=1.5 app.name.deploy=esup-canal-moncanal Les répertoires quickstart.home = /esupdev/esupdev-2.3/uportal_2-3- 1-quick-start tomcat.home = ${quickstart.home}/tomcat_5-0-18 uportal.home = ${quickstart.home}/uportal_rel-2-3-1 deploy.home = ${quickstart.home}/webapps/uportal deploy.tree = org/esupportail/portal/channels properties.tree = org_esup 5

build.xml all prepare clean undeploy deploy compil javadoc dist buildtar buildzip 6

Conventions de codage ESUP Portail 7

Normes Esup portail Conventions de codage Règles de nommage des packages Règles de nommage des fichiers de configuration Lecture des fichiers de configuration Règles de nommage des livrables ESUP 8

Conventions de codage Licence (Voir fichier license) Cartouche explicatif (Voir annexe1) Code pour javadoc Dans un package, la classe principale comporte le même nom que le package. Nom de classe : CNomCanal _variableprivee Utiliser get et set pour accéder aux variable http://www.esup-portail.org/consortium/espace/normes_1c/recommandations/conventions_ 9

Règles de nommage des packages Package spécifique à une université fr.univxxx.portal.channels.ccanal fr.univxxx.portal.utils.badgeuses Package commun au projet esup org.esupportail.portal.channels.ccanal org.esupportail.portal.utils.db 10

Règles de nommage des fichiers de configuration <deploy_home>/webinf/classes/properties/channels/org_esup/ccanal/ccanal. xml <deploy_home>/webinf/classes/properties/channels/fr_univxxx/ccanal/ccana l.xml 11

Lecture des fichiers de configuration Utilisation de DIGESTER Voir exemple fourni 12

Règles de nommage des livrables ESUP Cas d'un produit ESUP Portail : Esup-phpcas-0.4.4[-RCx] Cas d'un produit existant patché par ESUP Portail : Cas-server-2.0.11-esup-y[-RCx] Contenu du package : README INSTALL UPGRADE ChangeLog LICENCE pubchan_<nom_du_module>.x ml db/ source/ 13 build/ dist/ docs/ docs/api lib/ properties/ tests/ webpages/

Création d'un canal uportal 14

Canal uportal Présentation des principales interfaces Cycle de vie d'un canal Les différentes méthodes à implémenter Exemple simple : Hello World Exemple avec récupération du login Exemple avec demande d'un ticket cas Exercice 15

Présentation des Principales interfaces Nom de l'interface IChannel But L'interface de base ICacheable IPrivileged IPrivilegedChannel IMultithreadedChannel Cette interface permet d'obtenir une fonctionnalité de cache. Elle permet donc d'éviter un traitement lourd pour afficher toujours la même chose. Interface technique, utiliser IPrivilegedChannel Permet d accéder aux données internes du portail Permet l'ecriture d'un canal multi-threadé (une seule instance partagée entre les utilisateurs) 16

Cycle de vie d'un canal setstaticdata setruntimedata renderxml 17

Les différentes méthodes 18

GetRuntimeProperties { } public ChannelRuntimeProperties getruntimeproperties() return new ChannelRuntimeProperties() ; Permet au canal de signaler au portail s'il doit s'afficher ou pas en renvoyant un objet ChannelRuntimeProperties. A la création de cet objet la propriété pilotant l'affichage est vrai par défaut. 19

public void receiveevent(portalevent ev) {} Le portail informe le canal des actions de l'utilisateur en appelant cette méthode. Pour cela le portail passe un objet PortalEvent dont l'appel à la méthode geteventnumber permet au canal de savoir si l'utilisateur a cliqué sur l'un des boutons suivants : "about", "detach", "edit", "help" ou si l'utilisateur supprime le canal ou si l'utilisateur ferme sa session uportal. Par exemple, si l'on gère une page "about", c'est là que l'on va détecter que l'utilisateur demande son affichage. On mémorise alors l'information pour l'utiliser au moment de l'affichage par renderxml. if (ev.geteventnumber() == PortalEvent.ABOUT_BUTTON_EVENT) { mode = MODE_INFO; ReceiveEvent 20

SetStaticData public void setstaticdata(channelstaticdata sd) ChannelStaticData permet de retrouver des informations sur la configuration du canal ou l'utilisateur courant. Cette méthode est appelée aussitôt après le constructeur et peut servir, comme ce dernier, à initialiser des variables. 21

SetRuntimeData public void setruntimedata( ChannelRuntimeData rd ) { } this.runtimedata = rd ; ChannelRuntimeData permet de retrouver des informations d'exécution comme les paramètres d'un lien cliqué dans le canal. Cette méthode est appelée juste avant l'affichage. 22

RenderXml public void renderxml(contenthandler out) throws PortalException Cette méthode génère le XML qui sera traité par uportal pour l'affichage. 23

Exemples 24

Exemple simple : Hello Points intéressants World Récupération de paramètres (POST ou GET) Gestion d'un mode «A Propos» XSL adaptés au navigateur Passage de paramètres au XSL 25

Exemple simple : Hello Type IChannel World Composition ChelloWorld.java : classe java ChelloWorld.ssl : orientation vers la bonne feuille de style normal_explorer.xsl : feuille de style pour IE normal_netscape.xsl : feuille de style pour mozilla about.xsl : feuille de style pour le mode «A Propos» 26

Exemple simple : Hello World Récupération de paramètres (POST ou GET) La récupération se fait en général dans la méthode setruntimedata public On void setruntimedata(channelruntimedata utilise runtimedata.getparameter rd) { // Most of the processing is usually done here. this.runtimedata = rd; Le portail passe un objet ChannelRuntimeData qui contient les paramètres // process the form submissions if (runtimedata.getparameter("submit")!= null) { name = runtimedata.getparameter("name"); name_prev = name; } Récupération de paramètres spécifiques if (runtimedata.getparameter("clear")!= null) { name_prev = ""; } if (runtimedata.getparameter("back")!= null) { mode = NORMAL_MODE; } } 27

Exemple simple : Hello World Gestion d'un mode «A Propos» La récupération se fait dans la méthode receiveevent On utilise un objet de type PortalEvent On utilise aussi la constante PortalEvent.ABOUT_BUTTON_EVENT pour identifier le clique sur «A Propos» public void receiveevent(portalevent ev) { if (ev.geteventnumber() == PortalEvent.ABOUT_BUTTON_EVENT) { mode = ABOUT_MODE; } } NB : Il existe d'autre événements : Objet qui stocke les événements Constante pour le boutton A Propos UNSUBSCRIBE : désincription du canal EDIT_BUTTON_EVENT : boutton edit HELP_BUTTON_EVENT : boutton aide DETACH_BUTTON_EVENT : boutton détacher 28

Exemple simple : Hello World XSL adaptés au navigateur Dans la méthode renderxml : xslt.setxsl("chelloworld.ssl", stylesheet, runtimedata.getbrowserinfo ()); Titre de la feuille Navigateur <?xml stylesheet href="normal_netscape.xsl" title="normal" type="text/xsl" media="netscape"?> Dans le fichier ChelloWorld.ssl 29 <?xml stylesheet href="normal_explorer.xsl" title="normal" type="text/xsl" media="explorer"?> <?xml stylesheet href="about.xsl" title="about" type="text/xsl" default="true"?>

Exemple simple : Hello World Passage de paramètres au XSL Dans la méthode renderxml : Nom du paramètre Valeur du paramètre xslt.setstylesheetparameter("name_prev", name_prev); Dans les feuilles de styles XSL : <xsl:param name="name_prev">world</xsl:param> Valeur par défaut 30

Hello World Voir : CHelloWorld.zip 31

Exemple avec récupération du login Récupération de l'objet IPerson Utilisation de l'objet ChannelStaticData staticdata IPerson userconnect = null; // Get the person object userconnect = staticdata.getperson(); Récupération du login Utilisation de l'objet IPerson String login=""; // Get the login of the person Méthode permettant de récupérer un attribut login = (String) userconnect.getattribute(iperson.username); 32 Constant qui contient le nom de l'attribut pour le nom d'utilisateur

récupération du login Voir : CGetLogin.zip 33

Exemple avec demande ticket CAS Utilisation d'une librairie esup-portail import org.esupportail.portal.utils.*; import org.esupportail.portal.utils.casexceptions.*; Récupération du ticket String ticket=""; String Service = "imap://univ.fr"; ticket = CAS.get_pt(staticData, Service); 34

Exemple avec demande ticket CAS Exceptions remontées CASTempException : Exception de type temporaire CASPermException : Exception de type permanente CASGenericException : Exception de type générale (plus large) Récupération du code et du message CodeException=exp.getExceptionCode(); MsgException=exp.getMessage(); Constante des codes CASGenericException.CAS_BAD_PGT CASGenericException.CODE_NO_SERVICE_CALL CASGenericException.CODE_NO_CAS_AUTH CASGenericException.CODE_NO_CAS_SECURITY_CONTEXT CASGenericException.CODE_CAS_IO_ERROR CASGenericException.CODE_CAS_INTERNAL_ERROR CASGenericException.CODE_CAS_BAD_PGT CASGenericException.CODE_CAS_INVALID_REQUEST CASGenericException.CODE_CAS_NOT_VALID_PT 35

récupération du ticket Voir : CGetTicket.zip 36

Publication du canal 37

Publication d'un canal Utiliser le gestionnaire de canaux Utiliser un fichier XML ant uportal.pubchan -Dchannel=Canal.xml 38

Exercice 39

Exercice Prendre l'exemple CHelloWorld déployer publier à l'aide du fichier xml visualiser le résultat Modifier pour récupérer le login de l'utilisateur modifier le source modifier la feuille de style (enlever le formulaire+afficher le login) compiler, deployer, visualiser 40

Les Web services 41

Web services Présentation des web services Axis Exemple Exercice 42

Web Services Fonctions distantes Encapsulation XML des données SOAP XML-RPC Transport des données en http (ou smtp) Compatibilité entre différents langages Description à l aide de WSDL (format XML) Déclaration à l aide de UDDI 43

Axis Conteneur de Web Services Bibliothèque cliente de Web Services Outils java2wsdl WSDL2java TCPMonitor 44

Conteneur de Web Services 1 Axis tourne en tant que contexte Tomcat On déploie des classes java dans ce contexte (outil spécifiques pour le faire) Déploiement décrit dans un fichier WSDD (format XML) Scope Fonctions accessibles Etc. 45

Exemple 46

Conteneur de Web Services 2 Exemple de classe java 47

Conteneur de Web Services 3 Fichier de déploiement <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="calculator" provider="java:rpc"> <parameter name="classname" value="org.esupportail.formation.exemple.webservices.calculator" /> <parameter name="allowedmethods" value="*"/> </service> </deployment> 48

Conteneur de Web Services 4 Target ant de déploiement <target name="deploywsdd" description="publication du Web Service"> <java fork="true" dir="." classname="org.apache.axis.client.adminclient"> </target> </java> <classpath refid="classpath"/> <arg value="deploy.wsdd"/> <arg value="-lhttp://localhost:8080/axis/services"/> Ne pas oublier de copier la classe dans l environnement tomcat de Axis 49

Conteneur de Web Services 5 Le web service est accessible via http://localhost:8080/axis/services/calculator Le WSDL du service est accessible via http://localhost:8080/axis/services/calculator? wsdl 50

Ecrire un client 1 Utilisation de WSDL2Java Permet de générer des classes java clientes du WebService Target ant d appel de WSDL2Java <target name="wsdl2java"> <java fork="true" dir="c:/tmp" classname="org.apache.axis.wsdl.wsdl2java"> <classpath refid="classpath"/> <arg value="http://localhost:8080/axis/services/calculator?wsdl"/> </java> </target> 51

Ecrire un client 2 Placer les classes dans le code source de l application client Utilisation de ces classes public class Test { public static void main(string[] args) throws Exception { localhost.axis.services.calculator.calculator calc = new CalculatorServiceLocator().getCalculator(); int tmp = calc.add(1, 2); System.out.print("Résulat --> "+tmp); } } 52

Gestion des sessions Ajout au WSDD <parameter name="scope" value="session"/> Modification du code client ((CalculatorSoapBindingStub)calc). setmaintainsession(true); 53

TCP Monitor Outil pour observer le dialogue http On lance via ant org.apache.axis.utils.tcpmon On modifie le code pour utiliser un autre port getcalculator(new URL ("http://localhost:80/axis/services/calculator")) 54

Exercice Installer AXIS Utiliser l'exemple donné Déployer les services Générer les classes clientes Tester avec les classes de test fournies 55

Annexe 1 /** * * Description :<br/> *... * @version $Id : CExemple.java, V1.0, 15 juin 2004<br/> * Copyright (c) 2004 Esup Portail (www.esup-portail.org)<br/> * Classe(s) : CExemple<br/> * @author...<br/> */ 56