Bon pour relecture : installation et démarrage |
Bon pour relecture : la suite sur l'exemple |
Ce paragraphe non exhaustif permet de découvrir esup-commons V2 au travers du projet esup-example. Ce dernier servira de bac à sable permettant de toucher du doigt les aspects incontournables pour le développement d'un projet.
A l'aide du plugin Subversion (en perspective "SVN Repository Exploring") faire un checkout de la dernière version stable de esup-example :
https://subversion.cru.fr/esup-commons/tags/<dernière version>/esup-example |
Pour connaître la dernière version release voir : Changelog
>> capture faire quand tags
Faire un Checkout...
Choisir Check out as a project in the workspace
Nommer le projet esup-example et laisser les paramètres par défaut puis Finish
Passer en perspective "Java"
Clic-droit sur le projet Maven => Enable Dependency Managment.
Comme on l'a dit précédemment, un projet esup-commons est composé de plusieurs sous-projets ou modules situés ici dans des sous répertoires contenant chacun un fichier pom.xml, qui peuvent être des projets indépendants :
Faire clic-droit sur le projet Import... => Maven => Existing Maven Projects :
Ceci permet de transformer chaque module de Esup-commons en projet à part entière grâce aux fichiers pom.xml déclarés dans les différents répertoires du projet père
Là Eclipse retrouve tout les pom.xml, les laisser tous cochés
Cliquer sur Finish et il construit tous les projets.
Ceci permet de lier le projet à ses dépendances Maven déclarées dans les fichiers pom.xml situé dans chaque modules. Il créé un répertoire .m2 s'il n'existe pas. Enfin un petit "M" apparait sur l'icône du projet )
On constate que cette tâche entraîne le téléchargement de toutes les librairies nécessaires c'est pourquoi elle peut-être relativement longue suivant le nombre de librairies pré-existantes dans votre répertoire .m2 (téléchargées pour d'autres projets)
Il peut arriver que les chemin vers des sources soient calculés depuis la racine alors qu'elles se trouvent dans src/main/java, src/main/resources etc. Plutôt que de faire clic-droit sur le projet => Build Path => Configure Build Path et faire cela à la main faire un clic-droit sur le projet => Maven => Update Project Configuration.
clic-droit sur le projet => Run As => Maven install
Resultat :
Un projet esup-commons peut proposer un serveur d'application embraqué (pour un démarrage standalone) et ceci de manière presque transparente grâce Maven et à l'utilisation du plugin Jetty.
Ce plugin se base sur la structuration préconisée par défaut dans un projet maven et retrouve automatiquement la webapp à lancer. A partir du moment où le projet respecte les standards maven l'utilisation du plugin jetty ne nécessite pas de configuration supplémentaire (hormis éventuellement un contextPath)
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <contextPath>/</contextPath> </configuration> </plugin> |
Comme on l'a vu précédemment dans 1.2 Méthodologie de développement esup-commons propose différents type de projet (jsf-mixte, jsf-servlet etc.).
Le démarrage ne peut se faire que sur les modules packagés sous forme de WAR (qui sont donc dépendants des modules sous-jacents packagés en jar)
Dans esup-exemple plusieurs types de projet sont implémentés il faudra donc choisir.
Via Eclipse : Lancer le projet par un clic-droit sur le projet esup-example-jsf-servlet par exemple Run AS => Maven build... et choisir l'action jetty:run
On pourra modifier par Run => Run configurations... et sélectionner "Maven Build"
Lancer la commande.
Au premier démarrage on constate dans la console le téléchargement d'un certain nombre de librairies et la création d'une base de données(1637 INFO org.hibernate.tool.hbm2ddl.DatabaseMetadata - table not found: User
1639 INFO org.hibernate.tool.hbm2ddl.SchemaUpdate - schema update complete).
Dans la console on obtient
[INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building esup-example [INFO] task-segment: [jetty:run] [INFO] ------------------------------------------------------------------------ [INFO] Preparing jetty:run [INFO] [resources:resources {execution: default-resources}] [WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 33 resources [INFO] [compiler:compile {execution: default-compile}] [...] [INFO] Started Jetty Server 2010-11-24 12:04:26.289::INFO: Started SelectChannelConnector@0.0.0.0:8080 [INFO] Starting scanner at interval of 3 seconds. |
Dans un navigateur lancer localhost :8080... on se trouve redirigé vers l'authentification cas de Rennes mais ça fonctionne :
On va juste changer la page d'authentification afin de pouvoir se connecter.
Pour cela, modifier fichier /src/main/webapp/WEB-INF/web.xml ligne 150 ...
<!-- CAS --> <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://cas.uhp-nancy.fr/cas/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> |
... et 169
<filter> <filter-name>CAS Validation Filter</filter-name> <!-- <filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class> --> <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://cas.uhp-nancy.fr/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> |
A l'enregistrement on constate dans la console que ça recharge le projet.
[...] [INFO] Restart completed at Wed Nov 24 12:20:14 CET 2010 |
Retenter un localhost:8080
Et vérifier que l'authentification fonctionne