Discussion:
[jboss-user] [EJB3] - A question about the transaction?
Michael Owen
2013-06-18 06:53:56 UTC
Permalink
Michael Owen [https://community.jboss.org/people/liverpoolilove] created the discussion

"A question about the transaction?"

To view the discussion, visit: https://community.jboss.org/message/823591#823591

--------------------------------------------------------------
I created an MDB in my project.As follows

/**
* Message-Driven Bean implementation class for: QueueListenerMDB
*/
@MessageDriven(activationConfig = {
                    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
                    @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/test") })
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class QueueListenerMDB implements MessageListener {
          /**
           * Default constructor.
           */
          public QueueListenerMDB() {
          }


          /**
           * @see MessageListener#onMessage(Message)
           */
          public void onMessage(Message message) {
                    sendMessage(message);
          }


          public void sendMessage(Message message) {
                    try {
                              if (message instanceof TextMessage) {
                                        System.out.println("Queue: I received a TextMessage at "
                                                            + new Date());
                                        TextMessage msg = (TextMessage) message;
                                        System.out.println("Message is : " + msg.getText());
                              } else if (message instanceof ObjectMessage) {
                                        System.out.println("Queue: I received an ObjectMessage at "
                                                            + new Date());
                                        ObjectMessage msg = (ObjectMessage) message;
                                        DBTrigger trigger = (DBTrigger) msg.getObject();

                                        triggerService.saveTrigger(trigger);

                                        System.out.println("trigger Details: ");
                                        System.out.println(trigger);
                              } else {
                                        System.out.println("Not valid message for this Queue MDB");
                              }
                    } catch (JMSException e) {
                              e.printStackTrace();
                    }
          }
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/823591#823591]

Start a new discussion in EJB3 at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]
Michael Owen
2013-06-18 07:09:13 UTC
Permalink
Michael Owen [https://community.jboss.org/people/liverpoolilove] created the discussion

"Re: A question about the transaction?"

To view the discussion, visit: https://community.jboss.org/message/823600#823600

--------------------------------------------------------------
*triggerService there is a spring container management, I passed the @ Interceptors (SpringBeanAutowiringInterceptor.class) injected into the MDB that intercaptor,As follows*
public interface TriggerService {
  void saveTrigger(DBTrigger trigger);
}

@Service("triggerService")
public class TriggerServiceImpl implements TriggerService {
  @Autowired
  private TriggerDao triggerDao;

  @Override
  public void saveTrigger(DBTrigger trigger) {
  triggerDao.addJobDetail(trigger.getJobDetail());
  triggerDao.addTrigger(trigger.getCronTrigger());
  }
}

There is about a two-stage transaction when triggerDao.addTrigger (trigger.getCronTrigger ()) This method call fails, why triggerDao.addJobDetail (trigger.getJobDetail ()) This method of data stored in the database Why did not rollback?
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/823600#823600]

Start a new discussion in EJB3 at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]
Loading...