Comment utiliser @Alternative l'extension d'une classe concrète, dans une webapp?
Question
Je suis en train de désactiver 2 méthodes d'observation d'une classe qui se trouve dans une archive jar haricots (plus précisément, la LoginListener
de classe de Seam 3 module Faces), et l'utilisation des mines à la place.
J'ai un projet web, avec des haricots d'archives dans le:
app.war
\- WEB-INF
\- lib
\- seam-faces-3.1.0.Final.jar
|- my-beans.jar
Dans my-beans.jar
J'ai cette classe:
@Alternative
public class MyLoginListener extends LoginListener {
@Override
public void observePostLoginEvent(final PostLoginEvent event) {
}
@Override
public void observePreLoginEvent(final PreLoginEvent event) {
}
}
Alors, en my-beans.jar/META-INF/beans.xml
je l'activer:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<alternatives>
<class>com.mycompagny.MyLoginListener</class>
</alternatives>
</beans>
Et, même contenu dans app.war/WEB-INF/beans.xml
.
Ici, je ne comprends pas pourquoi, mais il est toujours le LoginListener
et observePostLoginEvent(@Observes PostLoginEvent event)
de observePreLoginEvent
originale que l'on appelle ... Quelqu'un sait pourquoi?
La solution
Avez-vous essayé d'annoter votre classe aussi avec @Specializes (@Alternative @Specializes)? Selon de soudure Référence cette façon vous pouvez complètement « cacher » l'autre haricot (avec ses producteurs et observateurs)