Bean 아카이브 항아리에있는 클래스의 관찰자 메소드 2 개 (더 구체적으로 Seam 3 Faces 모듈의 LoginListener
)를 사용하지 않으려하고 대신 광산을 사용하려고합니다. 내가 그 클래스있어 my-beans.jar
에서@Alternative를 사용하여 웹 애플리케이션에서 구체적인 클래스를 확장하는 방법은 무엇입니까?
app.war
\- WEB-INF
\- lib
\- seam-faces-3.1.0.Final.jar
|- my-beans.jar
: my-beans.jar/META-INF/beans.xml
에 다음
@Alternative
public class MyLoginListener extends LoginListener {
@Override
public void observePostLoginEvent(final PostLoginEvent event) {
}
@Override
public void observePreLoginEvent(final PreLoginEvent event) {
}
}
, 나는 그것을 활성화 : 콩이의 보관과
나는, 웹 프로젝트가
<?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
... 왜 누군가는 알고 있습니까?
좋은 힌트. 나는 그것을 시도했는데 결과는 다음과 같다. '18 : 56 : 42,724 ERROR [org.jboss.msc.service.fail] (MSC 서비스 스레드 1-14) MSC00001 : 서비스 jboss.deployment.unit을 시작하지 못했습니다. "app .war ".WeldService : 서비스 jboss.deployment.unit의 org.jboss.msc.service.StartException"app.war ".WeldService : org.jboss.weld.exceptions.DefinitionException : WELD-000047 Bean을 특수화하려면 다른 Bean을 확장해야합니다 : beans.xml 파일의''를 모두 제거하더라도 ... 한정자를 사용하여 Managed Bean [클래스 com.mycompagny.MyLoginListener]을 ... –
실제로 JBoss 인 것 같습니다. 7.0.2.Final 버그 JBoss 7.1.0.Final에 예외가 없기 때문에 (나는 다른 이상한 예외가 있지만 대신 Faces와 연결되어 있습니다 ...) –