Bonjour,
Voila mon problème: J'ai ajouté dans mon application web un dossier 'util' sous ext/portlet de Tomcat qui contient une classe publisher comme suit :
Puis j'ai créé une méthode main qui utilise la méthode sendMessage de la classe publisher:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 public class Publisher { private static Logger log; private static Properties props; private Connection connection; private Session session; private Destination sendQueue; private MessageProducer sendProducer; private TextMessage protoMessage; private TemporaryQueue replyQueue; private MessageConsumer replyConsumer; private long delaiAttente = 70000; private static void loadProperties() throws FileNotFoundException, IOException { log=Logger.getLogger(Publisher.class); log.log(Level.INFO,"Dans Publisher.................."); props = new Properties(); props.load(new FileInputStream("src/web_conf.properties")); log.log(Level.INFO,"Chargement des properties.........."); } // *******Create Connection*******// public Publisher() throws JMSException, FileNotFoundException, IOException { loadProperties(); ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setProperty(ConnectionConfiguration.imqAddressList,"127.0.0.1:7676"); connection=connectionFactory.createConnection("admin", "admin"); log.log(Level.INFO,"La connection est établie.........."); } public void sendMessage(Map data, String id_message , String queue) throws JMSException{ connection.start(); session = connection.createSession ( false, Session.AUTO_ACKNOWLEDGE); sendQueue = session.createQueue(props.getProperty(queue)); sendProducer = session.createProducer(sendQueue); protoMessage = session.createTextMessage(); Set set = data.entrySet(); Iterator iterator = set.iterator(); String protoXML="<ProtocolMessage id=\""+id_message+"\">"; while ( iterator.hasNext()) { Entry entry = (Entry)iterator.next(); protoXML += "<"+(String)entry.getKey()+">"+ (String)entry.getValue()+"</"+(String)entry.getKey()+">"; } protoXML+="</ProtocolMessage>"; protoMessage.setText(protoXML); sendProducer.send(protoMessage); connection.stop(); log.info("Message envoyé avec succés.."); finalize(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public static void main(String[] args) throws JMSException, FileNotFoundException, IOException { Publisher p = new Publisher(); HashMap map = new HashMap(); map.put("a", "toto"); map.put("c", "tutu"); map.put("b", "titi"); String id_mes = "1"; String queue = "imen"; p.sendMessage(map ,id_mes ,queue); System.out.println ("xxxxx"); }
L'exécution de l'envoie se fait en cliquant sur un bouton envoyer d'un portail Liferay introduit de la manière suivante dans view.jsp
:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <form action="<portlet:actionURL windowState="<%= WindowState.MAXIMIZED.toString() %>"><portlet:param name="struts_action" value="/ext/managemnt/send_Cip" /></portlet:actionURL>" method="post" name="<portlet:namespace />fm"> <input class="portlet-form-button" type="button" value="Envoyer" onClick="submitForm(document.<portlet:namespace />fm);"> </form>
Le problème est quand je clique sur envoyer depuis Liferay rien ne se passe et rien ne s'affiche dans la console. je sais pas d'où provient l'erreur.
Merci pour votre aide.
Partager