Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java > Frameworks
Frameworks Forum d'entraide sur les frameworks Web Java (Struts, JSF, Seam, GWT, Wicket, Tapestry, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/08/2012, 14h11   #1
ghiwani80
Membre du Club
 
Homme
Inscription : avril 2011
Messages : 58
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 58
Points : 44
Points : 44
Par défaut Spring et MQ en mode transactionnel

Bonjour

Je sollicite votre aide pour une problématique que je rencontre sur une application Spring/JMS,
En faite, via une IHM web, l’utilisateur remplit un formulaire et invoque un service de validation de mission et création.
Une fois les données sont validées, le système enregistre la mission dans une base oracle, et génère deux comptes rendu (plusieurs comptes rendu, selon un paramétrage) puis il les poste dans une MQ message par message (MQ d’ibm pour la prod et ActiveMQ pour le dev)


Le problème/besoin,
Si une erreur est rencontrée lors du 2éme poste, je vais avoir un declage entre les different système.
Je veux faire un retour arrière sur l’ensemble des messages envoyés.

Je cherche une moyen « genre transaction BDD » de sorte que les messages ne seront visibles dans la MQ qu’apres le
poste du dernier message.

Environnement
Tomcat
Spring
JMS
Hibernate
Struts

Merci d'avance


MissionService.java
Code :
1
2
3
4
5
6
7
8
9
10
11
 
  public String creerOperation(PersonneDto dto, boolean withSendContrat) throws BusinessException, TechnicalException
    {
		PersonneVO = vo = dto.extractVo();
        personneDao.savePersonne(vo)
        if (withSendContrat)
        {
            smFacade.sendCtrsToSM2(vo);
        }
        return vo.getReferenceSg();
    }
smFacade.java
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
public class SmFacadeImpl  implements ISmFacade {
 
	public void sendCtrsToSM2(PersonneVO vo) {
 
		// on recupere le params
		List<Contrat > contrats = ....
 
		for(Contrat ctr: contrats){
			// JXB: 
			String fluxXml = marshal(vo, ctr); 
			contratServiceJms.sendStringMessage(fluxXml);
 
		}
 
	}
voici la configuration spring pour JMS
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<bean id="contratServiceJms"
		class="com.bnss.services.ContratServiceJmsImpl">
		<property name="jmsTemplate" ref="MyjmsQueueTemplate" />
	</bean>
 
	<bean id="MyjmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate102" parent="jmsQueueTemplate">
		<property name="connectionFactory">
			<ref bean="MY_FACTORY_CONTRAT" />
		</property>
		<property name="defaultDestination" ref="MY_DST_CONTRAT" />
	</bean>
 
	<bean id="MY_DST_CONTRAT" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>java:comp/env/jms/MQ_DST_CONTRAT</value>
		</property>
	</bean>
	<bean id="MY_FACTORY_CONTRAT" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>java:comp/env/jms/FACTORY_CONTRAT</value>
		</property>
	</bean>
ghiwani80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h22.


 
 
 
 
Partenaires

Hébergement Web