我实现了一个CDI豆从另一豆观察事件:为什么在faces-config.xml中的CDI托管Bean没有注册为obersver?
@SessionScoped
public class FixedItemController implements Serializable {
....
public void onWorkflowEvent(@Observes WorkflowEvent workflowEvent) throws AccessDeniedException {
logger.info("evaluate event...");
....
}
....
}
这工作得很好,只要我使用JSF页面豆,其默认名称“fixedItemController”。
但如果我声明bean的另一个实例在faces-config.xml中像这样:
<managed-bean>
<managed-bean-name>myOrderItemController</managed-bean-name>
<managed-bean-class>org.imixs.marty.workflow.FixedItemController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>childItemProperty</property-name>
<property-class>java.lang.String</property-class>
<value>_orderItems</value>
</managed-property>
</managed-bean>
二审(myOrderItemController)不会自动为我WorkflowEvent观察员登记。
我该怎么做,以确保我的第二个实例(由faces-config.xml声明)将立即实例化并注册为我的workitemEvent的观察者?
感谢 - 所以你的意思是,我必须使用beans.xml描述符而不是faces-config.xml? – Ralph
取决于具体的功能要求。通常,您只使用注释/限定符/生产者,并将beans.xml保留为原来的内容。 – BalusC