Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Seam CDI中同一类的多个观察者_Seam_Java Ee 6_Cdi - Fatal编程技术网

Seam CDI中同一类的多个观察者

Seam CDI中同一类的多个观察者,seam,java-ee-6,cdi,Seam,Java Ee 6,Cdi,我有一门事件观察者课程。这是一个通用的邮件。它接收事件并创建一封电子邮件。我想创建此observer类的多个实例,如下所示: <m:Mailer resource="WEB-INF/email/adminConfirmation.ftl" emailNotificationAddress="admin@xxxx.com"> <order:onOrderChange> <s:parameters> <order:S

我有一门事件观察者课程。这是一个通用的邮件。它接收事件并创建一封电子邮件。我想创建此observer类的多个实例,如下所示:

<m:Mailer
resource="WEB-INF/email/adminConfirmation.ftl" 
emailNotificationAddress="admin@xxxx.com">
    <order:onOrderChange>
        <s:parameters>
        <order:StateChange>
           <s:Observes />
        </order:StateChange>
        </s:parameters>
    </order:onOrderChange>
</m:Mailer>
<m:Mailer
resource="WEB-INF/email/userConfirmation.ftl" 
emailNotificationAddress="${order.user.email}">
    <order:onOrderChange>
        <s:parameters>
        <order:StateChange>
           <s:Observes />
        </order:StateChange>
        </s:parameters>
    </order:onOrderChange>
</m:Mailer>
此外,我希望它继承基于注释的信息,所以我不必每次都声明这个顺序:onOrderChange方法。我试图用s:modifiers声明两个实例。但无论我做什么,都只附加了一个侦听器实例


我非常希望将同一类的多个不同配置的实例附加为事件观察器。而且还没有找到任何解决办法

如果发布类,而不是Seam 3 xml配置,对每个人来说都可能更容易…:-

您正在搜索的是一个通用邮件程序,它可以侦听不同的事件并根据事件发送不同的电子邮件,对吗?我不确定我是否看到了需求的通用部分,您可能希望在问题中添加更多信息以明确这一点

相反,我建议使用一个MailSender来侦听单个事件,例如,RegistrationMailEvent,它使用不同的限定符@Admin、@User进行注释。我会从一个地方开始完整的电子邮件逻辑——如果它变得太复杂,你仍然可以将它重构成更多的bean

这适合你的需要吗


哦,顺便说一句:事件是同步的——因此您必须知道您正在停止执行线程,直到事件处理完成。在邮件服务器速度较慢的情况下,可能不需要这样做。

澄清一下-实施并不重要。我询问如何创建同一类的多个ObserverBean实例来阅读主题。执行和目的并不重要。假设这些bean有完全相同的实现,但是参数化不同。这应该是一个不错的地方,所以你可以放心地假设我读了你文章的主题。