【问题标题】:How to use @Alternative extending a concrete class, in a webapp?如何在 web 应用程序中使用 @Alternative 扩展具体类?
【发布时间】:2012-12-29 00:41:38
【问题描述】:

我正在尝试禁用 bean 归档 jar 中的类的 2 个观察者方法(更具体地说,Seam 3 Faces 模块的 LoginListener 类),并改用地雷。

我有一个 web 项目,里面有一个 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 被称为...有人知道为什么吗?

【问题讨论】:

    标签: cdi jboss7.x


    【解决方案1】:

    您是否尝试使用@Specializes(@Alternative @Specializes)来注释您的课程? 根据Weld Reference,这样您就可以完全“隐藏”另一个 bean(及其生产者和观察者)

    【讨论】:

    • 很好的提示。我试过了,结果如下:18:56:42,724 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-14) MSC00001: Failed to start service jboss.deployment.unit."app.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."app.war".WeldService: org.jboss.weld.exceptions.DefinitionException: WELD-000047 Specializing bean must extend another bean: Managed Bean [class com.mycompagny.MyLoginListener] with qualifiers [@Any @Default],即使我删除了beans.xml 文件中的所有&lt;alternatives&gt;...
    • 实际上这似乎是一个 JBoss 7.0.2.Final 错误,因为我没有 JBoss 7.1.0.Final 的异常(我有另一个奇怪的异常,但它与 Faces 相关联。 ..)
    猜你喜欢
    • 2021-12-23
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多