Ive a Listner class called TopicS Im trying to call it from a gui called readMessages
When Im trying to run the class TopicS using the following method,
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { System.out.println("test test test"); System.out.print("you pressed" +topicCombobox.getSelectedItem()); TopicS a = new TopicS(); a.addTopicToListner(topicCombobox.getSelectedItem()); }
It gives me error saying
addTopicListner(java.lang.String) in Topics Cannot be applied to (java.lang.Object)
When I change the String to Object I get other errors. The main method is included below, this works fine without GUI, but I need to add it to GUI. What I am trying to do is take value to combobox which is String array, and place that string into topic (where the (t) is now
import java.util.Hashtable; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicSession; import javax.jms.TopicSubscriber; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class TopicS implements MessageListener { private TopicConnection topicConnection; private TopicSession topicSession; public Topic topic; private TopicSubscriber topicSubscriber; public TopicS() {} public void addTopicToListner(String t){ try { // create a JNDI context Hashtable properties = new Hashtable(); properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.exolab.jms.jndi.InitialContextFactory"); properties.put(Context.PROVIDER_URL,"rmi://localhost:1099/"); Context context = new InitialContext(properties); // retrieve topic connection factory TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory)context.lookup("JmsTopicConnectionFactory"); // create a topic connection topicConnection = topicConnectionFactory.createTopicConnection(); // create a topic session // set transactions to false and set auto acknowledgement of receipt of messages topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); // retrieve topic topic = (Topic) context.lookup(t); // create a topic subscriber and associate to the retrieved topic topicSubscriber = topicSession.createSubscriber(topic); // associate message listener topicSubscriber.setMessageListener(this); // start delivery of incoming messages topicConnection.start(); } catch (NamingException e) { e.printStackTrace(); } catch (JMSException e) { e.printStackTrace(); } } /* public static void main(String[] args) //{ try { TopicS listener = new TopicS(); Thread.currentThread().sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } */ // process incoming topic messages public void onMessage(Message message) { try { String messageText = null; if (message instanceof TextMessage) messageText = ((TextMessage)message).getText(); System.out.println(messageText); } catch (JMSException e) { e.printStackTrace(); } } }