Pages enfant
  • 1.3 Découverte avec esup-example

Vous regardez une version antérieure (v. /wiki/pages/viewpage.action?pageId=100663943) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 16) afficher la version suivante »

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.

Installation

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 :

Démarrage

A compléter

Concernant le serveur embarqué

Via Eclipse : Lancer Run => Run configurations...

Sélectionner "Maven Build" => "Add" (ou double-clic) puis Choisir le répertoire esup-example et l'action jetty:run

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

Découverte

Une fois authentifié on arrive sur ceci :

Volet CAS Demo

Le libellé CURRENT.USER n'est pas déclaré et traduit ?

On constate :

????? CURENT.USER ?????

A compléter

Concernant l'internationalisation

Dans les logs on voit le message :

2010-11-24 15:58:45,780 WARN [org.esupportail.commons.services.i18n.BundleMap] -
no string found for key 'CURRENT.USER' and locale 'fr'

Dans properties/i18n/bundles ouvrir Custom_fr.properties et Custom_en.properties
Et y ajouter respectivement les entrées :

CURRENT.USER = Utilisateur courant

Et

CURRENT.USER = Current user

Vérifier que c'est bon désormais

On ne récupère que l'uid ?

Dans les logs on a :

2010-11-24 16:00:18,118 DEBUG [org.esupportail.example.services.authentication.AuthenticatorImpl] -
found auth info in session: User#25411576[id=[cbissler], displayName=[null], admin=[false], language=[null]]

On vérifie dans AuthenticatorImpl.java, rien d'anormal on ne positionne que l'UID et on n'interroge pas le LDAP

Affichage se fait dans /src/main/webapp/stylesheets/welcome.jspx

<rich:panelBarItem label="CAS demo" name="CAS">
	<h:outputText value="#{msgs['CURRENT.USER']} #{welcomeController.currentUserId}"/>
</rich:panelBarItem>

Depuis WelcomeController.java suivre la récupération de l'utilisateur on retombe dans la méthode getUser de AuthenticatorImpl.java
WelcomeController -> AbstractContextAwareController (getCurrentUser) -> SessionController (getCurrentUser) -> Authenticator (getUser)

Pourquoi affiche-t-on "Nom – USER" ?

Suivre depuis /src/main/webapp/stylesheets/welcome.jspx et arriver sur /src/main/webapp/stylesheets/_include/_header.jspx
welcome.jspx (l.10)? template.jspx ? _include/_header.jspx

<t:outputText value="Nom - USER" styleClass="span_currentUser"  />

Donc c'est en dur tout est normal

Volet Ajax Demo

A compléter

Concernant les librairies de vues etc.

Lorsque l'on tape quelque chose dans le champ ça le reporte en même temps à côté.

Volet Exception demo

Cliquer sur le bouton "test exception" le mot ERROR s'affiche !

Envoyer la levée d'exception par mail

On constante l'erreur dans les logs de la console suivie de :

ERROR [org.esupportail.commons.services.smtp.SmtpUtils] - an exception occured while sending the email to '"Liste devel
(normally sent to bugs@domain.edu)" <example-devel@liste.domain.edu.fr>' using SMTP server 'smtp.univ-rennes1.fr:25'.
ERROR [org.esupportail.commons.services.smtp.SmtpUtils] - javax.mail.MessagingException: Could not connect to SMTP host:
smtp.univ-rennes1.fr, port: 25;
[...]

Corriger dans config.properties

########################################################################
# SMTP
#

smtp.host=persmail.uhp-nancy.fr
smtp.user=login
smtp.password=xxxx
smtp.fromEmail=admin.email@univ.fr
smtp.fromName=ESUP-Portail Example
smtp.interceptAll=true
smtp.interceptEmail=admin.email@univ.fr
smtp.interceptName=Liste devel

Retenter et constater qu'un mail est bien parti.

Loguer les erreurs/messages dans un fichier

Dans config.properties on constate ceci :########################################################################

  1. LOGGING

log.level=WARN
log.output=stdout
log.pattern=%d %p %c - %m%n
log.file=D:/esup-example.log

Lorsque l'on change ceci cela n'a aucun effet, si on regarde dans le war ces valeurs ne sont pas prises en compte.

Cette partie doit être supprimée


En revanche dans profiles.xml<profiles>
<profile>
<id>developpement</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<deploy.type>servlet</deploy.type>
<cas.url>https://sso-cas.univ-rennes1.fr</cas.url>
<tomcat.host>localhost</tomcat.host>
<tomcat.port.string>:8080</tomcat.port.string>
<log.level>INFO</log.level>
<log.output>stdout</log.output>
<log.file>/tmp/esup-blank.log</log.file>
<cache.path>/tmp/esup-blank</cache.path>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<deploy.type>servlet</deploy.type>
<cas.url>https://sso-cas.univ-rennes1.fr</cas.url>
<tomcat.host>localhost</tomcat.host>
<tomcat.port.string>:8080</tomcat.port.string>
<log.level>INFO</log.level>
<log.output>file</log.output>
<log.file>/tmp/esup-blank.log</log.file>
<cache.path>/tmp/esup-blank</cache.path>
</properties>
</profile>
</profiles>

Si on adapte la partie developpement qui est actif par défaut en mettant un log.output=file et le chemin vers le log.file ça marche

A quoi sert le <cas.url>https://sso-cas.univ-rennes1.fr</cas.url>? Si on modifie ici quel impact?


Fonctionnement des profiles Maven

Changer le nom de l'application

Le mais est annoncé comme provenant de l'application esup-blank et on constate également que le titre de la page est esup-blank.

Pour cela modifier dans /src/main/resources/misc/application.xml (ligne 27) la balise :

<property name="name" value="esup-blank">...

en

<property name="name" value="esup-example">...

Constater que le titre de la page a changé et que le mail envoyé lors de l'exception est bien intitulé "esup-example 0.0.1".

On changera également dans /src/main/webapp/WEB-INF/web.xml (ligne 9)

<display-name>esup-example</display-name>

Où apparait ceci? quel impact?

Volet JPA demo

A compléter

Concernant hibernate, JPA

Ajout d'une entrée dans une table

Essayer d'ajouter, modifier ou supprimer un utilisateur.

Essayer le fonctionnement du paginateur.

  • Aucune étiquette