如何启用MessageDrivenContext注入?

Syn*_*sso 2 java java-ee message-driven-bean

我想明确设置一个事务在JavaEE MDB中回滚:

private MessageDrivenContext context;
@MessageDriven(mappedName = "jms/ReaderQueue", activationConfig =  {
        @ActivationConfigProperty(
            propertyName = "acknowledgeMode", 
            propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(
            propertyName = "destinationType", 
            propertyValue = "javax.jms.Queue")
    })
public class MessageReaderBean implements MessageListener {
    public void onMessage(Message message) {
        ctx.setRollbackOnly(); // <-- see here, my good fellow!
    }
    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException {
        this.context = ctx;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,容器没有打电话setMessageDrivenContext给我,我得到了一个NullPointerException.注入上下文需要什么魔法酱?

Pie*_*ers 6

您应该使用@Resource注释MessageDrivenBeanContext:

@Resource private MessageDrivenContext context;
Run Code Online (Sandbox Code Playgroud)

然后容器将注入上下文.你不需要这个setMessageDrivenContext方法.