You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "james strachan (JIRA)" <ji...@apache.org> on 2007/03/07 15:13:21 UTC

[jira] Resolved: (AMQ-321) 'reliable' does not work for http

     [ https://issues.apache.org/activemq/browse/AMQ-321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

james strachan resolved AMQ-321.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 4.2.0

Things should now work fine with failover://

> 'reliable' does not work for http
> ---------------------------------
>
>                 Key: AMQ-321
>                 URL: https://issues.apache.org/activemq/browse/AMQ-321
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Transport
>    Affects Versions: 3.1
>         Environment: Windows 2000
> jdk 1.4.2_06
>            Reporter: Hans Dockter
>            Priority: Critical
>             Fix For: 4.2.0
>
>         Attachments: reliable_bug_test_case.zip
>
>
> There are so many wonderful features in your product. It is such a pity that many of them don't work properly with http. Here are two problems I have (in one or the other way since a very long time, that spans many releases). The code to reproduce the bugs is appended at the end as well as attached.
> Reliable does not work correctly with http.
> 1.) 
> If I start the producer before the broker, the producer starts a loop trying to connect. If I start the broker the following happens: 
> tcp: The producer sends the message.
> http: An exception is thrown by the broker (see the log at the end of this mail: Exception 1).
> 2.) 
> If I start the broker, then the consumer the following happens:
> tcp: Nothing special
> http without reliable: Nothing special
> http with reliable: Exception as in the case above is thrown by the broker.
> Here is the code to reproduce the stated behaviour.
> -------------- Broker
> import javax.jms.JMSException;
> import org.activemq.broker.BrokerContainer;
> import org.activemq.broker.impl.BrokerContainerImpl;
> import org.activemq.store.vm.VMPersistenceAdapter;
> public class Broker {
>     public static final String BROKER_URL = "tcp://localhost:8081";
>     public static void main(String[] args) throws JMSException,
>             InterruptedException {
>         BrokerContainer container = new BrokerContainerImpl("remoteBroker");
>         container.addConnector(BROKER_URL);
>         container.setPersistenceAdapter(new VMPersistenceAdapter());
>         container.start();
>         // lets wait until we're killed.
>         Object lock = new Object();
>         synchronized (lock) {
>             lock.wait();
>         }
>     }
> }
> ---------------- Producer
> import javax.jms.Connection;
> import javax.jms.Destination;
> import javax.jms.JMSException;
> import javax.jms.MessageProducer;
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import org.activemq.ActiveMQConnectionFactory;
> public class Producer {
>     public static void main(String[] args) throws JMSException {
>         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("reliable:" + Broker.BROKER_URL);
>         Connection connection = connectionFactory.createConnection();
>         Session session = connection.createSession(false,
>                 Session.AUTO_ACKNOWLEDGE);
>         TextMessage textMessage = session.createTextMessage();
>         textMessage.setText("hans");
>         Destination destination = session.createQueue("queue");
>         MessageProducer messageProducer = session.createProducer(destination);
>         messageProducer.send(destination, textMessage);
>         System.out.println("send: " + textMessage); 
> 		System.exit(0);
>     }
> }
> ----------------- Consumer
> import javax.jms.Connection;
> import javax.jms.Destination;
> import javax.jms.JMSException;
> import javax.jms.Message;
> import javax.jms.MessageConsumer;
> import javax.jms.MessageListener;
> import javax.jms.Session;
> import org.activemq.ActiveMQConnectionFactory;
> public class Consumer {
>     public static void main(String[] args) throws JMSException {
>         System.setProperty("activemq.persistenceAdapterFactory",
>                 "org.activemq.store.vm.VMPersistenceAdapterFactory");
>         ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
>                 "reliable:" + Broker.BROKER_URL);
>         Connection connection = connectionFactory.createConnection();
>         Session session = connection.createSession(false,
>                 Session.AUTO_ACKNOWLEDGE);
>         Destination destination = session.createQueue("queue");
>         MessageConsumer messageConsumer = session.createConsumer(destination);
>         messageConsumer.setMessageListener(new MessageListener() {
>             public void onMessage(Message message) {
>                 System.out.println("Received: " + message);
>             }
>         });
>         connection.start();
>     }
> }
> ------------Exception 1
> 969  [SocketListener0-0] WARN  org.activemq.transport.http.HttpTunnelServlet  - No clientID header so ignoring request
> 969  [SocketListener0-0] WARN  /  - /: 
> java.lang.NullPointerException
> 	at org.activemq.transport.http.HttpTunnelServlet.doPost(HttpTunnelServlet.java:114)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
> 	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
> 	at org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:665)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1565)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1517)
> 	at org.mortbay.http.HttpServer.service(HttpServer.java:954)
> 	at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
> 	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
> 	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
> 	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
> 	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> 	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.