This forum has been archived. Please start a new discussion on GitHub.

IceStorm cannot work well in RH AS4

I have run IceStorm and the clock demo in winxp, it work well.
But when I run IceStorm in RH AS4, and run publisher and subscriber in winxp.
The publisher raise the Ice::ConnectionRefusedException when it call clock->tick(). I suprise that it have connected with server when it call manager->retrieve("time") and why it's can't connected when it call clock->tick() :confused: .

My config file as follow:
[COLOR=Blue]  Clock.Subscriber.Endpoints=tcp
  IceStorm.TopicManager.Proxy=IceStorm/TopicManager:tcp -h -p 10000
  IceStorm.TopicManager.Endpoints=tcp -h -p 10000
  IceStorm.Flush.Timeout = 200[/COLOR]

My config_service file as follow:
[COLOR=Blue]  IceBox.ServiceManager.Endpoints=tcp -p 9998
  IceBox.Service.IceStorm=IceStormService,21:create --Ice.Config=config


  • A new problem

    I have resolve the first problem. Because I set the property IceStorm.TopicManager.Endpoints to tcp, so the server listen on, and the publisher runing on anthoer computer can't connect to it.

    Now I run the IceStorm server on a machine with public IP(, and run publisher and subscriber in a machine with private IP. The subscriber can't receive the message published by publisher. I think that the server want to connect to a private IP(, but can't, so it remove the subscriber form it's queue.

    What can I do for this?

    Thanks in advance.
  • matthew
    matthew NL, Canada
    Currently the subscriber has to be directly accessible. That means you'll need to punch a hole in your firewall, and port forward to the server. You'll need to set the PublishedEndpoint property also so that the correct address is advertised by your server. See the Ice manual for details, or the FAQ in issue3 of connections.

    There is another solution which doesn't require opening a hole in the firewall which is to use bi-directional connections (see demo/Ice/bidir, and the Ice manual for details). Unfortunately, IceStorm doesn't support this at present. Its not a hard change to make it do so, however.

    If you have a commercial need for this feature please contact us at
  • matthew
    matthew NL, Canada
    We have been discussing this issue internally. Can you tell us why you want to run a bi-directional connection directly to IceStorm? What is the network configuration that leads you to want to do this?
  • How can I decrease the cache size?

    I want to trasfer some messages and files from one client(publisher) to another client(subscriber). the IceStrom server is in public network, but the both clients are in the private network(after NAT).
    Now, I have another problem when I test the IceStorm:
    the publisher send a file(the file size >20M) to a subscriber, and the subscriber receive slowly, when the publisher have finished, the subscriber received 10% only. That is said, the IceStorm stored the file data in a cache.
    How can I decrease the cache size?
    or How can I control the publisher's speed to match the subscriber?