Comment utiliser @Alternative l'extension d'une classe concrète, dans une webapp?

StackOverflow https://stackoverflow.com/questions/9332311

  •  27-10-2019
  •  | 
  •  

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?

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top