[
https://issues.apache.org/jira/browse/AMQNET-355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13218694#comment-13218694
]
Jim Gomes commented on AMQNET-355:
----------------------------------
It doesn't appear that you are using the failover protocol. I highly recommend
that you use it, especially since this is an unattended Windows service.
> Run as windows service: Need reconnect to establish the connection to the
> ActiveMQ Server
> -----------------------------------------------------------------------------------------
>
> Key: AMQNET-355
> URL: https://issues.apache.org/jira/browse/AMQNET-355
> Project: ActiveMQ .Net
> Issue Type: Task
> Components: ActiveMQ, NMS
> Affects Versions: 1.5.1, 1.5.2
> Environment: Windows7 32Bit pro SP1 / Windows XP pro SP3 / Windows
> 2003 R2 32Bit Standard SP2
> ActiveMQ Version: 5.5.0
> Reporter: Marc Giavarra
> Assignee: Jim Gomes
> Priority: Minor
>
> I am using the latest version of NMS to connect to an ActiveMQ Server
> (version 5.5.0).
> If you use this snippet in a windows service, you get an
> EndOfStreamException/ConnectionClosedException at the first call of
> "this.connection.Start();". If you call "CreateConnection" and "Start" once
> again, everything works fine.
> In a normal windows application you do not need to recall.
> Code:
> protected override void OnStart(string[] args)
> {
> // Install service
> // c:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe
> C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\bin\Debug\WWWebSocketService.exe
> try
> {
> Apache.NMS.IConnectionFactory connectionFactory = new
> Apache.NMS.ActiveMQ.ConnectionFactory("ssl://xxxxx");
> System.Diagnostics.Trace.WriteLine("Create connection");
> this.connection =
> connectionFactory.CreateConnection("MessageBrokerUsername",
> "MessageBrokerPassword");
> this.connection.ExceptionListener += new
> Apache.NMS.ExceptionListener(connection_ExceptionListener);
> System.Diagnostics.Trace.WriteLine("Start connection.");
> bool connected = false;
> int connectionCounter = 0;
> while (!connected)
> {
> try
> {
> connectionCounter++;
> this.connection.Start();
> connected = this.connection.IsStarted;
> }
> catch (System.Exception ex)
> {
> this.connection.Dispose();
> System.Diagnostics.Trace.WriteLine(ex.ToString());
> System.Diagnostics.Trace.WriteLine("Tries to connect:
> " + connectionCounter.ToString());
> System.Threading.Thread.Sleep(3000);
> // do reconnect
> this.connection =
> connectionFactory.CreateConnection("MessageBrokerUsername",
> "MessageBrokerPassword");
> }
> }
> System.Diagnostics.Trace.WriteLine("Tries to connect: " +
> connectionCounter.ToString());
> this.session = connection.CreateSession();
> System.Diagnostics.Trace.WriteLine("Create queue.");
> Apache.NMS.IDestination destination = new
> Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("test");
> System.Diagnostics.Trace.WriteLine("Create consumer.");
> this.consumer = session.CreateConsumer(destination);
> this.consumer.Listener += new
> Apache.NMS.MessageListener(consumer_Listener);
> }
> catch (System.Exception ex)
> {
> System.Diagnostics.Trace.WriteLine(ex.ToString());
> }
> }
> OS: Windows XP pro SP3 // Windows 2003 R2 32Bit Standard SP2
> User: Local System // administrator
> Debug output
> [3996] Create connection
> [3996] Start connection.
> [3996] Apache.NMS.ActiveMQ.ConnectionClosedException: The connection is
> already closed!
> [3996] at Apache.NMS.ActiveMQ.Connection.CheckConnected() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:line
> 821
> [3996] at Apache.NMS.ActiveMQ.Connection.Start() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:line
> 419
> [3996] at WebSocketTestService.WebSocketService.OnStart(String[] args) in
> C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\WebSocketService.cs:line
> 44
> [3996] Tries to connect: 1
> [3996] Apache.NMS.NMSException: Unable to read beyond the end of the stream.
> ---> System.IO.EndOfStreamException: Unable to read beyond the end of the
> stream.
> [3996] at System.IO.__Error.EndOfFile()
> [3996] at System.IO.BinaryReader.FillBuffer(Int32 numBytes)
> [3996] at System.IO.BinaryReader.ReadInt32()
> [3996] at Apache.NMS.Util.EndianBinaryReader.ReadInt32() in
> c:\Sandbox\activemq-dotnet\Apache.NMS\trunk\src\main\csharp\Util\EndianBinaryReader.cs:line
> 135
> [3996] at
> Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.Unmarshal(BinaryReader dis) in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\OpenWire\OpenWireFormat.cs:line
> 226
> [3996] at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.ReadLoop() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Transport\Tcp\TcpTransport.cs:line
> 281
> [3996] --- End of inner exception stack trace ---
> [3996] Tries to connect: 2
> [3996] Create queue.
> [3996] Create consumer.
> OS: Windows7 32Bit pro SP1
> User: Local System
> Debug output
> [7300] Create connection
> [7300] Start connection.
> [7300] Tries to connect: 1
> [7300] Create queue.
> [7300] Create consumer.
> User: administrator
> Debug output
> [4128] Create connection
> [4128] Start connection.
> [4128] Apache.NMS.NMSException: Über das Ende des Streams hinaus kann nicht
> gelesen werden. ---> System.IO.EndOfStreamException: Über das Ende des
> Streams hinaus kann nicht gelesen werden.
> [4128] bei System.IO.__Error.EndOfFile()
> [4128] bei System.IO.BinaryReader.FillBuffer(Int32 numBytes)
> [4128] bei System.IO.BinaryReader.ReadInt32()
> [4128] bei Apache.NMS.Util.EndianBinaryReader.ReadInt32() in
> c:\Sandbox\activemq-dotnet\Apache.NMS\trunk\src\main\csharp\Util\EndianBinaryReader.cs:Zeile
> 135.
> [4128] bei
> Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.Unmarshal(BinaryReader dis) in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\OpenWire\OpenWireFormat.cs:Zeile
> 226.
> [4128] bei Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.ReadLoop() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Transport\Tcp\TcpTransport.cs:Zeile
> 281.
> [4128] --- Ende der internen Ausnahmestapelüberwachung ---
> [4128] Apache.NMS.ActiveMQ.ConnectionClosedException: The connection is
> already closed!
> [4128] bei Apache.NMS.ActiveMQ.Connection.CheckConnected() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:Zeile
> 821.
> [4128] bei Apache.NMS.ActiveMQ.Connection.Start() in
> c:\Sandbox\activemq-dotnet\Apache.NMS.ActiveMQ\trunk\src\main\csharp\Connection.cs:Zeile
> 419.
> [4128] bei WebSocketTestService.WebSocketService.OnStart(String[] args) in
> C:\Sandbox\CS_2011.483\Unproduktiv\WebSocketTestService\WebSocketService.cs:Zeile
> 44.
> [4128] Tries to connect: 1
> [4128] Tries to connect: 2
> [4128] Create queue.
> [4128] Create consumer.
> OS: An other Windows7 32Bit pro SP1
> the opposite: administrator is ok; Local System throws the exception
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira