Как использовать @Alternative, расширяющий конкретный класс, в веб-приложении? - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь отключить 2 метода-наблюдателя для класса, находящегося в архивном архиве bean (точнее, для класса LoginListener модуля Seam 3 Faces), и использовать вместо него мины.

Iу меня есть веб-проект с архивом bean-компонентов:

app.war
\- WEB-INF
  \- lib
    \- seam-faces-3.1.0.Final.jar
    |- my-beans.jar

В my-beans.jar У меня есть этот класс:

@Alternative
public class MyLoginListener extends LoginListener {
    @Override
    public void observePostLoginEvent(final PostLoginEvent event) {
    }

    @Override
    public void observePreLoginEvent(final PreLoginEvent event) {
    }
}

Затем в my-beans.jar/META-INF/beans.xml я активирую его:

<?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>

И то же содержание в app.war/WEB-INF/beans.xml.

Здесь я не понимаю, почему, но это все еще оригинальные LoginListener observePostLoginEvent(@Observes PostLoginEvent event) и observePreLoginEvent, которыеназывается ... кто-нибудь знает почему?

1 Ответ

1 голос
/ 20 февраля 2012

Вы пытались аннотировать свой класс также с помощью @Specializes (@Alternative @Specializes)?Согласно Weld Reference , таким образом, вы можете полностью "спрятать" другой компонент (с его производителями и наблюдателями)

...