在Java EE中使用AOP添加@Schedule注释

发布于 2024-12-01 19:46:19 字数 1071 浏览 3 评论 0原文

我正在尝试使用 EJB 3.1 @Schedule 注释创建计划事件。只要我的 bean 中有注释,一切都会正常工作。因为我希望能够在部署时更改计划而不重新打包耳朵,所以我想使用 AOP 添加此注释。但这是行不通的。

这是我的示例 bean:

@AspectDomain(value = "TimerBeanDomain")
@Singleton
public class TimerBean {

    public void timerMethod() {
        System.out.println("Timer method activated");
    }

}

这是我的 aop.xml 文件(打包在 -ejb.jar 外部):

<?xml version="1.0" encoding="UTF-8"?>

<aop xmlns="urn:jboss:aop-beans:1.0">
    <domain name="TimerBeanDomain">
        <annotation expr="method(void *->timerMethod(..))">
            @javax.ejb.Schedule(second = "*/30", minute = "*", hour = "*")
        </annotation>
    </domain>
</aop>

Bean 打包在 -ejb.jar 内部,aop 文件位于此 -ejb.jar 外部。

控制台中没有错误。它就是行不通。

我也用无状态 bean 尝试过。但这没有帮助。在本例中,aop.xml 看起来像

<domain name="TimerBeanDomain" extends="Stateless Bean" inheritBindings="true">

我正在使用 Jboss 6.0.1 和 6.1.0。至少有什么方法可以调试添加注释的AOP过程吗?

任何帮助将不胜感激。

问候, 伊曼

I am trying to create schedule event using EJB 3.1 @Schedule annotation. Everything works fine as long as I have the annotation inside my bean. Because I want to be able to change schedule in deploy time without repacking ear I want to add this annotation using AOP. But this does not work.

Here is my sample bean:

@AspectDomain(value = "TimerBeanDomain")
@Singleton
public class TimerBean {

    public void timerMethod() {
        System.out.println("Timer method activated");
    }

}

Here is my aop.xml file (packed outside -ejb.jar):

<?xml version="1.0" encoding="UTF-8"?>

<aop xmlns="urn:jboss:aop-beans:1.0">
    <domain name="TimerBeanDomain">
        <annotation expr="method(void *->timerMethod(..))">
            @javax.ejb.Schedule(second = "*/30", minute = "*", hour = "*")
        </annotation>
    </domain>
</aop>

Bean is packed inside -ejb.jar and aop file is outside this -ejb.jar.

There are no errors in console. It just does not work.

I tried it with stateless bean as well. But it does not help. In this case aop.xml looked like

<domain name="TimerBeanDomain" extends="Stateless Bean" inheritBindings="true">

I am using Jboss 6.0.1 and 6.1.0. At least is there some way how to debug the AOP process of adding annotation?

Any help will be appreciate.

Regards, Eman

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

メ斷腸人バ 2024-12-08 19:46:19

您仍然可以使用 EJB3.1 在代码外部配置计划,而不使用 AOP,请参阅:

可以在应用程序代码之外配置 EJB 3.1 @Schedule 吗?

You can still configure the schedule outside of the code with EJB3.1, without using AOP, see:

Can the EJB 3.1 @Schedule be configured outside of the application code?

夏日浅笑〃 2024-12-08 19:46:19

可能是一个已知的错误: https://issues.jboss.org/browse/EJBTHREE-1632< /a>

我将在接下来的周末和周末更详细地研究此事。如果我找到任何解决方法,请告诉您。

Probably it's a known bug: https://issues.jboss.org/browse/EJBTHREE-1632

I shall look into the matter in a bit more detail during forthcoming weekends & let you know if I find any work-around.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文