Yes, I've removed the server/default/deploy/jms folder but the issue remains. The
code works on Windows, but on linux with remoting this issue shows up. Here's the
code that makes the connection:
<bean id="jndiTemplate"
class="org.springframework.jndi.JndiTemplate">
| <property name="environment">
| <props>
| <prop
key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
| <prop
key="java.naming.provider.url">jnp://someIP:1099</prop>
| <prop
key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
| </props>
| </property>
| </bean>
|
| <bean id="threadPoolSize" class="java.lang.Integer">
| <constructor-arg value="${threadPoolSize}"/>
| </bean>
|
| <bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
| <property name="jndiTemplate"><ref
bean="jndiTemplate" /></property>
| <property name="jndiName" value="/ConnectionFactory"/>
| </bean>
|
| <bean id="requestQueue"
class="org.springframework.jndi.JndiObjectFactoryBean">
| <property name="jndiTemplate"><ref
bean="jndiTemplate" /></property>
| <property name="jndiName" value="${queue}"/>
| </bean>
public class StartupListener implements ServletContextListener {
| private static final Log log = LogFactory.getLog(StartupListener.class);
| private static Connection connection;
| private static Session session;
| private static MessageConsumer consumer;
| private static Boolean run = Boolean.TRUE;
| private static ExecutorService pool;
| private static Thread daemonThread;
| private static final String PREFIX = " ~~ ";
| private static MeteoService metService;
|
| /**
| * Startup trigger of the application.
| */
| public void contextInitialized(ServletContextEvent ctx) {
| log.info("==== Initializing ServiceBroker");
|
| logInfo("Creating polling thread ...");
| daemonThread = new Thread(new MessageDispatcher());
|
| try {
| ApplicationContext _ctx =
WebApplicationContextUtils.getWebApplicationContext(ctx.getServletContext());
| initializeWorkerThreadPool(_ctx);
| initializeJMSEnvironment(_ctx);
|
| metService = (MeteoService) _ctx.getBean("metService");
|
| logInfo("Starting the Session ...");
| connection.start();
|
| logInfo("Starting a Daemon Thread responsible for message dispatching
...");
| daemonThread.start();
|
| log.info("==== ServiceBroker initialized successfully");
| } catch (Throwable e) {
| log.fatal(e.getMessage(), e);
| }
| }
|
| /**
| * This is a context lifecycle (callback) method.
| * The Servlet Context is being destroyed by the Container due to a shutdown.
| * As a result we need to clean up our privately managed resources.
| */
| public void contextDestroyed(ServletContextEvent ctx) {
| synchronized (run) {
| log.info("==== Shutting down PilotBriefing ServiceBroker ...");
| run = Boolean.FALSE;
|
| logInfo("Interrupting polling thread ...");
| daemonThread.interrupt();
|
| if (session != null) {
| try {
| logInfo("Closing JMS Session ...");
| session.close();
| } catch (JMSException e) {
| log.error(e.getMessage(), e);
| }
| }
|
| if (connection != null) {
| try {
| logInfo("Closing JMS Connection ...");
| connection.close();
| } catch (JMSException e) {
| log.error(e.getMessage(), e);
| }
| }
|
| if (pool != null) {
| logInfo("Shutting down ThreadPool");
| pool.shutdownNow();
| }
|
| log.info("==== ServiceBroker shutdown complete");
| }
| }
|
| private void logInfo(String msg) {
| log.info(PREFIX + msg);
| }
|
| /**
| * Initialization of JMS environment.
| * @param _ctx external configuration parameters
| * @throws NamingException
| * @throws JMSException
| */
| private void initializeJMSEnvironment(ApplicationContext _ctx) throws
NamingException, JMSException {
| Queue queue = (Queue) _ctx.getBean("requestQueue");
|
| logInfo("Lookup of ConnectionFactory ...");
| ConnectionFactory cf = (ConnectionFactory)
_ctx.getBean("jmsConnectionFactory");
|
| logInfo("Creating JMS Connection ...");
| connection = cf.createConnection();
|
| logInfo("Creating JMS Session ...");
| session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
| logInfo("Creating MessagConsumer ...");
| consumer = session.createConsumer(queue);
| }
|
| /**
| * Setup a pool of worker threads for message handling.
| * @param _ctx external configuration parameters
| */
| private void initializeWorkerThreadPool(ApplicationContext _ctx) {
| int poolSize = (Integer) _ctx.getBean("threadPoolSize");
| logInfo("Initializing Thread Pool [#" + poolSize + "] ...");
| pool = Executors.newFixedThreadPool(poolSize);
| }
|
| /**
| * Daemon thread for the dispatching of incoming messages to a pooled Worker Thread
that will handle the request.
| * This class is implemented as a Thread because otherwise the Servlet Container
Thread that executes this listener class,
| * fails to complete as a result of the polling-loop.
| */
| class MessageDispatcher implements Runnable {
| public void run() {
| try {
| while (run) {
| TextMessage message = (TextMessage) consumer.receive();
| if (message != null) {
| JMSUtils.printMessage("Received request", message);
| pool.execute(createMessageHandler(message));
| }
| }
| } catch (Throwable t) {
| log.error(t.getMessage(), t);
| }
| }
|
| /**
| * Factory method.
| * @param message
| * @return
| * @throws JMSException
| */
| private Runnable createMessageHandler(TextMessage message) throws JMSException {
| return new MessageHandler(metService, session, message.getJMSReplyTo(),
message.getJMSMessageID(), message.getText());
| }
|
| }
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4257808#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...