JMS publisher calling JBoss AS7 problem.
haroonfoad Apr 29, 2012 2:48 AMWhy I'm getting runtime error running this jms publisher
org.jnp.interfaces.NamingContext - Failed to connect to localhost:5445
javax.naming.CommunicationException: Failed to retrieve stub from server localhost:5445 [Root exception is java.io.EOFException]
JBoss AS7.1.1.Final
package javaapplication3; import java.util.HashMap; import java.util.Hashtable; import javax.jms.JMSException; import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicPublisher; import javax.jms.TopicSession; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; //import com.lit.jms.utils.log.Log; /** * Publish to the JMS the required messages. * * @author R.Couturier */ public class JMSPublisher { private static HashMap<String, JMSPublisher> jmsSenders = new HashMap<String, JMSPublisher>(); public static long jsmId = 0; /** * @param serverIP The IP of the server that run the JMS service. * @param serverPort The port of the server that run the JMS service. * @param topicName The name of the JMS topic (the topic do the same functionality as the queue). */ private Context context; private String topicName; private TopicConnection topicConnection; private TopicPublisher topicPublisher; private TopicSession topicSession; private JMSPublisher(String topicName) { super(); this.topicName = topicName; /** * create a JNDI context */ Hashtable<String, String> properties = new Hashtable<String, String>(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); properties.put(Context.PROVIDER_URL, "jnp://localhost:5445/"); properties.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces"); try { Logger.getLogger(JMSPublisher.class.getName()).debug("initializing context ... "); this.context = new InitialContext(properties); Logger.getLogger(JMSPublisher.class.getName()).debug("Context initialized"); /** * retrieve topic connection factory */ TopicConnectionFactory factory = (TopicConnectionFactory) this.context.lookup("java:/ConnectionFactory"); Logger.getLogger(this.getClass()).info("2"); Logger.getLogger(JMSPublisher.class.getName()).debug("Factory looked up"); Logger.getLogger(this.getClass()).info("3"); /** * create a topic connection using factory */ this.topicConnection = factory.createTopicConnection(); Logger.getLogger(JMSPublisher.class.getName()).debug("Topic created"); this.topicConnection.start(); Logger.getLogger(JMSPublisher.class.getName()).debug("Topic connection started"); /** * create a topic session */ /** * set transactions to false and set auto acknowledgement of receipt of messages */ this.topicSession = this.topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); Logger.getLogger(JMSPublisher.class.getName()).debug("Topic session created"); /** * lookup the topic */ Topic topic = (Topic) this.context.lookup(this.topicName); Logger.getLogger(JMSPublisher.class.getName()).debug("Topic looked up"); /** * create a topic publisher and associate to the retrieved topic */ this.topicPublisher = this.topicSession.createPublisher(topic); Logger.getLogger(JMSPublisher.class.getName()).debug("Topic publisher created"); } catch (NamingException e) { Logger.getLogger(JMSPublisher.class.getName()).error("NamingException:" + e.getCause().getMessage()); } catch (JMSException e) { Logger.getLogger(JMSPublisher.class.getName()).error("JMSException:" + e.getMessage()); } } /** * DOCUMENT ME! */ public void finish() { /** * clean up */ try { this.context.close(); this.topicSession.close(); this.topicPublisher.close(); this.topicConnection.close(); this.topicPublisher = null; this.topicSession = null; this.topicConnection = null; this.context = null; jmsSenders = new HashMap<String, JMSPublisher>(); } catch (JMSException e) { Logger.getLogger(JMSPublisher.class.getName()).error(e); } catch (NamingException e) { Logger.getLogger(JMSPublisher.class.getName()).error(e); } Logger.getLogger(JMSPublisher.class.getName()).info("JMS sender closed"); } /** * DOCUMENT ME! * * @param topicName DOCUMENT ME! * * @return DOCUMENT ME! */ public static JMSPublisher getInstance(String topicName) { JMSPublisher jmsSender = jmsSenders.get(topicName); if (jmsSender == null) { jmsSender = new JMSPublisher(topicName); jmsSenders.put(topicName, jmsSender); } return jmsSender; } /** * Publish a in input to the JMS queue. * @param input The The input to send to the JMS. */ public void sendInput(String xmlMessage) throws JMSException { /** * publish the point to the topic */ TextMessage message = this.topicSession.createTextMessage(xmlMessage); message.setJMSMessageID("ID:"); this.topicPublisher.publish(message); Logger.getLogger(JMSPublisher.class.getName()).info(message); finish(); } public static void main(String[] args) { BasicConfigurator.configure(); try { getInstance("topic/newtestTopic").sendInput("()()()()()()()()()() Sending some special characters ()()()()()()()()()()"); } catch (JMSException e) { // TODO Auto-generated catch block Logger.getLogger(JMSPublisher.class.getName()).error("listen da there is an error "+e); } } }