...
Voici
...
une
...
liste
...
des
...
exceptions
...
fréquemment
...
rencontrés
...
lors
...
de
...
l'installation
...
de
...
l'application
...
eCandidat.
...
Elles
...
sont
...
souvent
...
dû
...
à
...
une
...
erreur
...
de
...
configuration.
...
| Sommaire |
|---|
VersionException:
...
The
...
database
...
is
...
too
...
old
...
(x.x.x),
...
please
...
run
...
'ant
...
upgrade'
...
Vous
...
venez
...
d'installer
...
la
...
nouvelle
...
version
...
de
...
eCandidat
...
mais
...
vous
...
n'avez
...
pas
...
exécuté
...
la
...
target
...
ant
...
upgrade.
...
Une
...
fois
...
celle-ci
...
exécutée,
...
vérifiez
...
que
...
la
...
table
...
B_VERS_MANA
...
si
...
la
...
valeur
...
est
...
à
...
jour.
...
ObjectNotFoundException:
...
No
...
LDAP
...
entry
...
found
...
for
...
entity
...
[*********
...
]
...
Lors
...
de
...
l'exécution
...
de
...
la
...
target
...
init-data,
...
il
...
est
...
possible
...
d'avoir
...
cette
...
exception
...
si
...
la
...
propriété
...
init.firstAdministratorId
...
soit
...
mal
...
initialisé.
...
Il
...
faut
...
s'assurer
...
que
...
la
...
valeur
...
saisie
...
corresponde
...
bien
...
à
...
l'id
...
au
...
sens
...
LDAP.
...
En
...
effet,
...
l'init-data
...
va
...
interroger
...
LDAP
...
pour
...
récupérer
...
la
...
fiche
...
sur
...
l'id
...
passé
...
et
...
ainsi
...
initialiser
...
le
...
premier
...
compte
...
administrateur
...
dans
...
l'application.
...
ObjectNotFoundException avec un code postal inexistant
L'exception
...
envoyée
...
par
...
l'application
...
contient
...
la
...
ligne
...
suivante
...
:
| Bloc de code |
|---|
} caused by: org.esupportail.commons.exceptions.ObjectNotFoundException: Ce code postal ( 97610 ) n'existe pas dans la base de données APOGEE {code} |
Cette
...
exception
...
est
...
générée
...
par
...
l'application
...
lorsque
...
le
...
webservice
...
Apogée
...
remonte
...
une
...
WebException
...
du
...
style
...
technical.data.nullretrieve.commune.
...
En
...
vérifiant
...
dans
...
le
...
référentiel
...
Apogée,
...
si
...
le
...
code
...
postal
...
n'existe
...
pas,
...
il
...
suffit
...
de
...
mettre
...
à
...
jour.
...
Sinon
...
cela
...
signifie
...
que
...
le
...
webservice
...
s'est
...
planté
...
pendant
...
un
...
cours
...
instant
...
en
...
générant
...
une
...
erreur
...
à
...
l'appel
...
de
...
la
...
méthode.
...
DownloadException:
...
data
...
is
...
null
...
Il
...
s'agit
...
là
...
d'un
...
"replay"
...
de
...
l'url
...
de
...
download
...
d'un
...
dossier.
...
En
...
effet,
...
lorsque
...
le
...
candidat
...
télécharge
...
son
...
dossier,
...
l'application
...
va
...
jouer
...
une
...
URL
...
du
...
type
...
https://_url_de_l'appli_?downloadId=****\*
...
(https://_url_de_l%27appli_/?downloadId=*****
...
) afin
...
de
...
pouvoir
...
activer
...
le
...
filtre
...
de
...
téléchargement
...
dans
...
le
...
web.xml
...
et
...
ainsi
...
envoyer
...
le
...
flux
...
de
...
données
...
au
...
candidat
...
pour
...
télécharger
...
le
...
dossier.
...
L'id
...
passé
...
en
...
paramètre
...
ne
...
peut
...
être
...
joué
...
2
...
fois
...
car
...
en
...
réalité,
...
on
...
se
...
base
...
sur
...
des
...
données
...
chargées
...
en
...
session
...
pour
...
créer
...
le
...
fichier
...
à
...
télécharger.
...
Il
...
s'avère
...
que
...
pour
...
rejouer
...
volontairement
...
ce
...
genre
...
d'URL,
...
il
...
faut
...
réussir
...
à
...
la
...
capturer
...
par
...
exemple
...
avec
...
un
...
plugin
...
comme
...
TamperData
...
(sur
...
Firefox).
...
Une
...
supposition
...
sur
...
ce
...
sujet
...
serait
...
donc
...
que
...
des
...
personnes
...
malveillantes
...
veulent
...
tester
...
s'il
...
est
...
possible,
...
en
...
changeant
...
ou
...
en
...
rejouant
...
la
...
valeur
...
de
...
l'id,
...
d'obtenir
...
d'autres
...
données
...
que
...
celles
...
initialement
...
obtenues.
...
A
...
Rennes
...
1,
...
nous
...
avons
...
2
...
cas
...
de
...
comportement
...
plus
...
ou
...
moins
...
malveillants
...
:
...
-
...
soit
...
l'URL
...
est
...
rejouée
...
une
...
fois,
...
supposition
...
que
...
leur
...
test
...
est
...
un
...
échec
...
auquel
...
cas
...
ils
...
abandonnent
...
;
...
-
...
soit
...
l'URL
...
est
...
rejouée
...
plusieurs
...
fois.
...
Dans
...
ce
...
cas,
...
on
...
a
...
constaté
...
que
...
l'id
...
peut
...
changer
...
ou
...
non
...
mais
...
le
...
plus
...
important
...
est
...
que
...
l'adresse
...
IP
...
de
...
l'entité
...
malveillante
...
est
...
identique.
...
Les
...
"attaques"
...
sont,
...
dans
...
des
...
cas
...
déjà
...
constatés,
...
répétées
...
toutes
...
les
...
2
...
minutes.
...
La
...
supposition
...
est
...
qu'étant
...
donnée
...
que
...
le
...
comportement
...
provoque
...
une
...
erreur,
...
les
...
personnes
...
malveillantes
...
tentent
...
de
...
surcharger
...
le
...
serveur
...
en
...
saturant
...
les
...
fichiers
...
de
...
logs.
...
Fort
...
heureusement,
...
dans
...
le
...
second
...
cas,
...
nous
...
n'avons
...
jamais
...
planté
...
le
...
serveur
...
car
...
l'application
...
ne
...
conserve
...
qu'un
...
certain
...
nombre
...
de
...
fichiers
...
de
...
logs,
...
on
...
évite
...
donc
...
la
...
surcharge
...
sur
...
ce
...
point.
...
La
...
solution
...
que
...
nous
...
avons
...
parfois
...
envisagée
...
lorsque
...
les
...
attaques
...
étaient
...
en
...
cours,
...
était
...
de
...
blacklister
...
l'adresse
...
IP
...
pendant
...
une
...
journée
...
ou
...
deux.
...
Je
...
l'ai
...
par
...
ailleurs
...
constaté
...
à
...
mon
...
retour
...
de
...
vacances,
...
nous
...
avons
...
eu
...
une
...
attaque
...
de
...
ce
...
genre
...
la
...
semaine
...
dernière
...
et
...
elle
...
a
...
duré
...
6
...
heures,
...
entre
...
19h
...
et
...
1h,
...
cela
...
sans
...
conséquence.
...
MissingResourceException:
...
Can't
...
find
...
resource
...
for
...
bundle
...
java.util.PropertyResourceBundle,
...
key
...
geographieMetier.urlService.ssl
...
Dans
...
le
...
fichier
...
configUrlServices.properties,
...
il
...
manque,
...
entre
...
autres,
...
la
...
clé
...
geographieMetier.urlService.ssl.
...
Il
...
faut
...
donc
...
ajouter
...
les
...
lignes
...
suivantes
...
:
| Bloc de code |
|---|
} administratifMetier.urlService.ssl=false etudiantMetier.urlService.ssl=false pedagogiqueMetier.urlService.ssl=false geographieMetier.urlService.ssl=false {code} |
Elles
...
sont
...
nécessaires
...
pour
...
les
...
librairies
...
des
...
webservices
...
Apogée
...
et
...
lorsqu'on
...
saisit
...
false,
...
cela
...
veut
...
dire
...
qu'on
...
n'utilise
...
pas
...
SSL.
...
De
...
plus,
...
si
...
cela
...
n'est
...
pas
...
fait,
...
je
...
vous
...
conseille
...
aussi
...
d'ajouter
...
les
...
lignes
...
suivantes
...
:
| Bloc de code |
|---|
} WS_SSL_MODE=false WS_CERTIF_STORE_PATH= WS_KEY_STORE_PATH= WS_KEY_PASS= WS_KEY_TYPE= {code} h2. |
ConfigException:
...
la
...
balise
...
boucle
...
n'a
...
pas
...
de
...
fin
...
Si
...
cette
...
erreur
...
intervient
...
dans
...
la
...
classe
...
DynamicMailContentImpl,
...
cela
...
signifie
...
que
...
vous
...
avez
...
modifié
...
de
...
la
...
mauvaise
...
manière
...
un
...
...
dynamique
...
sur
...
la
...
page
...
prévue
...
à
...
cet
...
effet.
...
Dans
...
le
...
cas
...
précis
...
de
...
la
...
balise
...
boucle,
...
il
...
faut
...
rajouter
...
la
...
fin
...
de
...
celle-ci
...
avec
...
ce
...
code
| Bloc de code |
|---|
} ${end_boucle} {code} |
Il
...
faut
...
faire
...
très
...
attention
...
aux
...
modifications
...
apportées
...
dans
...
ce
...
module
...
car
...
certaines
...
parties
...
des
...
mails
...
ne
...
doivent
...
pas
...
changer
...
car
...
ce
...
sont
...
des
...
expressions
...
qui
...
sont
...
analysées
...
et
...
traitées
...
par
...
l'application
...
pour
...
donner
...
le
...
rendu
...
final.
MySQLIntegrityConstraintViolationException: Duplicate entry
Si l'erreur porte sur les clés lib_nom_pat_usr ou cod_dep_nai, ce sont des clés générées par Hibernate lors de l'init-data.
Elles correspondent à la clé d'unicité sur les champs lib_nom_pat_usr - lib_pr1_usr - lib_pr2_usr - cod_dep_nai - dat_nai_ind - ville_nai_ind d'un individu dans le mapping. Cette clé évite qu'un candidat crée deux fois un dossier dans l'application.
Le problème vient qu'un Individu au sens de l'application est divisé en base de données sur les deux tables OPI_USER et INDIVIDU.
Il faut donc :
- dans la table OPI_USER, supprimer l'index lib_nom_pat_usr
- dans la table INDIVIDU, supprimer l'index cod_dep_nai