activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tomasz Wiczling (JIRA)" <>
Subject [jira] Created: (AMQNET-135) Error in parsing composite Uri on Linux Mono
Date Tue, 16 Dec 2008 14:55:05 GMT
Error in parsing composite Uri on Linux Mono

                 Key: AMQNET-135
             Project: ActiveMQ .Net
          Issue Type: Bug
          Components: ActiveMQ Client
         Environment: 1. ActiveMQ on linux CentOS 4.4
2. Client on Mono 1.9 on linux CentOS 4.4
            Reporter: Tomasz Wiczling
            Assignee: Jim Gomes
            Priority: Critical

I'm using ActiveMQ .Net to connect to ActiveMQ from Mono application on linux.
I've downloaded new (12-12-2008, rev. 726083) version of ActiveMQ .Net and started from testing
new feature: FAILOVER transport.
First test made on Windows were very promising, but trying to run my application on linux
caused an error.
I've invested it a bit and found out this:
On linux Mono the System.Uri constructor causes error while parsing composite uri, because
it replaces all '//' with '/'. And tries to connect to 'tcp:/localhost:61616' for example.

I've tested it on newest Mono 2.0 SUSE with the same result.

Uris, I've tried:

All with the same result :((

I modified Apache.NMS.ActiveMQ.ConnectionFactory constructors as below:
		public ConnectionFactory(string brokerUri, string clientID)

			: this(new Uri(brokerUri), clientID)


			Tracer.Debug("ConnectionFactory(string brokerUri, string clientID): brokerUri='" + brokerUri
+ "'");


		public ConnectionFactory(Uri brokerUri, string clientID)


			Tracer.Debug("ConnectionFactory(Uri brokerUri, string clientID): brokerUri='" + brokerUri
+ "'");

			this.brokerUri = brokerUri;

			this.clientId = clientID;



and prepare simple islustrating program:

using System;

using Apache.NMS;

using Apache.NMS.ActiveMQ;

namespace IssueExample


	internal class ConsoleTracer : ITrace


		public bool IsDebugEnabled { get { return true; } }

		public bool IsInfoEnabled { get { return true; } }

		public bool IsWarnEnabled { get { return true; } }

		public bool IsErrorEnabled { get { return true; } }

		public bool IsFatalEnabled { get { return true; } }

		public void Debug(string message) { Console.WriteLine("DEBUG:" + message); }

		public void Info(string message) { Console.WriteLine("INFO:" + message); }

		public void Warn(string message) { Console.WriteLine("WARN:" + message); }

		public void Error(string message) { Console.WriteLine("ERROR:" + message); }

		public void Fatal(object message) { Console.WriteLine("FATAL:" + message); }


	class Program


		public static void Main(string[] args)


			Tracer.Trace = new ConsoleTracer();

			IConnectionFactory factory = new ConnectionFactory(args[0]);

			IConnection connection = factory.CreateConnection();


			Console.WriteLine("Connected and Disconnected successfully to '" + args[0] + "'");





Running my program the output was:

# mono IssueExample.exe failover://localhost/\(tcp://\,tcp://\)/
DEBUG:ConnectionFactory(Uri brokerUri, string clientID): brokerUri='failover://localhost/(tcp:/,tcp:/'
DEBUG:ConnectionFactory(string brokerUri, string clientID): brokerUri='failover://localhost/(tcp://,tcp://'
DEBUG:Reconnect was triggered but transport is not started yet. Wait for start to connect
the transport.
DEBUG:Creating reconnect task
DEBUG:Waking up reconnect task
INFO:Waiting for transport to reconnect.
DEBUG:Attempting connect to: tcp:/
DEBUG:Opening socket to:  on port: -1
DEBUG:Connect fail to: tcp:/, reason: System.ArgumentOutOfRangeException:
Argument is out of range.
Parameter name: Invalid port
  at System.Net.IPEndPoint.set_Port (Int32 value) [0x00000]
  at System.Net.IPEndPoint..ctor (System.Net.IPAddress address, Int32 port) [0x00000]
  at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.Connect (System.String host, Int32
port) [0x00000]
  at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.CompositeConnect (System.Uri location)
  at Apache.NMS.ActiveMQ.Transport.TransportFactory.CompositeConnect (System.Uri location)
  at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect () [0x00000]
DEBUG:Waiting 10 ms before attempting connection.
<Infinit loop of reconnects>

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

View raw message