@EJB / @Inject ne fonctionne pas

Rédigé par gorki - - Aucun commentaire

Le problème :

Un EJB est appelé, mais ne vois pas ses attributs remplis par le container : les attributs normalement remplis par @Inject et @EJB ont une valeur null.

Malgré les vérifications habituelles, je n'avais toujours pas d'attributs injectés et du coup des NullPointerException à la pelle.

Solution :

Vérifier les éléments suivants à vérifier sur la classe appelée :

  1. présence du @Stateless/@Singleton/@Stateful sur la classe
  2. classe non finale
  3. classe appelante instanciée par le container
    • Soit via @Inject / @EJB elle-même
    • Soit suivant la méthode du container :
      1. pour l'auto-injection OpenEJB/TomEE,
      2. soit suite à un @Startup, une servlet, @Path, etc...
  4. si vous êtes en EJB 3.0, présence du META-INF/beans.xml
  5. méthode appelée publique non finale

C'était ce dernier cas qui m'a donné du fil à retordre. Tout était bon et pourtant lors de l'appel d'une méthode particulière, l'objet pourtant instancié par le container ne voyais pas ses attributs injectés. Le fait d'avoir une méthode finale empêche le container d'injecter ses outils autour de la méthode.

OVH mutualisé - domaine principal et sous répertoire

Rédigé par gorki - - Aucun commentaire

Le problème :

Dans l'arborescence OVH mutualisé, le répertoire de base pour le domaine principal est "www".

En créant un sous domaine, on le redirige (par défaut) vers
"www/<repertoire sous domaine>".

/
/www
/www/sousdomaine

On se retrouve alors avec un répertoire www qui contient un site complet dont un sous-répertoire qui contient le site du sous-domaine.
Ce n'est pas simple à gérer au final pour la maintenance : sauvegarde, update...

On aimerait plutôt avoir :

/
/www/domaine
/www/sousdomaine

Solution 1 : Redirection

Pleins d'articles trouvés via Google, mais entre les hébergements pro, dédiés, etc...

Voici une solution qui marche : mettre dans le fichier .htaccess du répertoire "www":

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?<domaine-principal>\.<tld>$ [NC]
RewriteCond %{REQUEST_URI} !^/sous-repertoire
RewriteRule ^(.*)$ /sous-repertoire/$1 [L]

Mais ce n'est pas idéal, certains logiciels (dont pluXml) doivent activer leur propre réécriture.

Solution 2 : Ne pas créer de sous-répertoire dans www :)

En fait le manager OVH propose par défaut la forme suivante : www/<répertoire sous-domaine>, mais elle n'est pas obligatoire.

Enlevez le slash, et créez votre répertoire au même niveau que le www, exemple :

/
/www
/www-sousdomaine
Fil RSS des articles