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.注入上下文需要什么魔法酱?
您应该使用@Resource注释MessageDrivenBeanContext:
@Resource private MessageDrivenContext context;
Run Code Online (Sandbox Code Playgroud)
然后容器将注入上下文.你不需要这个setMessageDrivenContext方法.