Ik zit, voor mijn SCBCD studies, al heel de dag te zoeken op een vreemd probleem en ik kom er zelf niet uit, daarom hoop ik dat hier iemand mij een beetje verder kan helpen.
Ik probeer via jms een Message Driven Bean op te roepen in GlassFish. Probleem is dat glassfish precies een random queue uitpikt.
mijn code:
client:
de bean waar het zou moeten toekomen:
Een andere bean in mijn container:
Als ik nu mijn client run krijg ik 50% van de tijd "message received" als output en 50% "hello MDB" terwijl ik hier altijd "hello MDB" zou verwachten.
-Ik heb al @ActivationConfigProperty(propertyName="destinationName",propertyValue="jms/a")}) toegevoegd aan mijn mdbs, zonder succes.
-Ik heb al geprobeerd om mijn beans te deployen zonder de mappedName attribute maar daar kan Glassfish blijkbaar niet mee overweg.
-Ik heb al op google gezocht, zonder succes.
-ik heb in mijn client bij producer.send mijn destination meegegeven, zonder succes
Ik probeer via jms een Message Driven Bean op te roepen in GlassFish. Probleem is dat glassfish precies een random queue uitpikt.
mijn code:
client:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public static void main(String[] args)throws Exception { InitialContext ctx = new InitialContext(); ConnectionFactory cf = (ConnectionFactory)ctx.lookup("jms/aFactory"); Destination destination = (Destination)ctx.lookup("jms/a"); Connection conn = cf.createConnection(); Session session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(destination); TextMessage message = session.createTextMessage(); message.setText("Hello MDB!"); producer.send(message); session.close(); conn.close(); System.exit(0); } |
de bean waar het zou moeten toekomen:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| @MessageDriven(mappedName = "jms/a", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") }) public class NewMessageBean implements MessageListener { public NewMessageBean() { } public void onMessage(Message message) { try { TextMessage msg = (TextMessage) message; System.out.println(msg.getText()); } catch (JMSException ex) { Logger.getLogger(NewMessageBean.class.getName()).log(Level.SEVERE, null, ex); } } } |
Een andere bean in mijn container:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
| @MessageDriven(mappedName = "jms/b", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") }) public class TestBean implements MessageListener { public TestBean() { } public void onMessage(Message message) { System.out.println("message received!!!!!!!"); } } |
Als ik nu mijn client run krijg ik 50% van de tijd "message received" als output en 50% "hello MDB" terwijl ik hier altijd "hello MDB" zou verwachten.
-Ik heb al @ActivationConfigProperty(propertyName="destinationName",propertyValue="jms/a")}) toegevoegd aan mijn mdbs, zonder succes.
-Ik heb al geprobeerd om mijn beans te deployen zonder de mappedName attribute maar daar kan Glassfish blijkbaar niet mee overweg.
-Ik heb al op google gezocht, zonder succes.
-ik heb in mijn client bij producer.send mijn destination meegegeven, zonder succes