Archived
This forum has been archived. Please start a new discussion on GitHub.
IcePack and Glacier2 configuration

xdm
La Coruña, Spain
in Help Center
Hello
I trying to configure Glacier2 to work with a service deployed in a icepacknode, i'm not sure if this is posible. i basicaly create a chatserice similar to the example provided with Ice sources but i create it as a IceBox::Service and activate it trow IcePack instead of running as Ice::Application
how is the way to specific glacier2.server.endpoints to point a service in to icepack
must the service has a fixed endpoint in the descriptor file or can it use default option ?
I trying to configure Glacier2 to work with a service deployed in a icepacknode, i'm not sure if this is posible. i basicaly create a chatserice similar to the example provided with Ice sources but i create it as a IceBox::Service and activate it trow IcePack instead of running as Ice::Application
how is the way to specific glacier2.server.endpoints to point a service in to icepack
must the service has a fixed endpoint in the descriptor file or can it use default option ?
0
Comments
-
xdm wrote:Hello
I trying to configure Glacier2 to work with a service deployed in a icepacknode, i'm not sure if this is posible. i basicaly create a chatserice similar to the example provided with Ice sources but i create it as a IceBox::Service and activate it trow IcePack instead of running as Ice::Application
how is the way to specific glacier2.server.endpoints to point a service in to icepack
must the service has a fixed endpoint in the descriptor file or can it use default option ?
Yes, this is possible. One the future newsletter articles will show exactly how to do this. You don't need to do anything special with respect to endpoints, and you certainly don't need to run them on a fixed endpoint.
To turn the server into an IceBox server you take the contents of the ChatSessionServer::run method and make it into an IceBox service.
Something like this.class ChatSessionServiceI : public ::IceBox::Service { public: virtual void start(const string& name, const CommunicatorPtr& communicator, const StringSeq& args) { _adapter = communicator->createObjectAdapter("ChatServer"); _adapter->add(new DummyPermissionsVerifierI, Ice::stringToIdentity("verifier")); _adapter->add(new ChatSessionManagerI, Ice::stringToIdentity("ChatSessionManager")); _adapter->activate(); } virtual void stop() { _adapter->deactivate(); } private: Ice::ObjectAdapterPtr _adapter; };
Then you need a deployment descriptor. Something like this:<icepack> <variable name="icebox.exe" value="icebox"/> <target name="windebug"> <variable name="icebox.exe" value="iceboxd"/> </target> <application name="ChatServer"> <node name="node"> <server name="ChatApplication" kind="cpp-icebox" endpoints="tcp -h 127.0.0.1" activation="on-demand"> <service name="ChatSession" entry="ChatSessionService:create"> <adapters> <adapter name="ChatServer" endpoints="tcp"> <object identity="ChatSessionManager" type="::Chat::ChatSession"/> <object identity="verifier" type="::Glacier2::PermissionsVerifier"/> </adapter> </adapters> </service> </server> </node> </application> </icepack>
Regards, Matthew0 -
matthew wrote:
_adapter->add(new ChatSessionManagerI, Ice::stringToIdentity("ChatSessionManager"));
<adapter name="ChatServer" endpoints="tcp"> <object identity="ChatSessionManager" type="::Chat::ChatSession"/> <object identity="verifier" type="::Glacier2::PermissionsVerifier"/>
Regards, Matthew
I don't understand why you put type="::Chat::ChatSession" and not type="::Chat::ChatSessionManager"
I can't configure glacier2 to contact my icepackglacier2router: error: service caught unhandled Ice exception: Network.cpp:545: Ice::ConnectionRefusedException: connection refused: Connection refused [ glacier2router: Network: accepted tcp connection local address = 192.168.0.3:10005 remote address = 192.168.0.3:50121 ] [ glacier2router: Network: accepted tcp connection local address = 127.0.0.1:32785 remote address = 127.0.0.1:47850 ] [ glacier2router: Network: closing tcp connection local address = 192.168.0.3:10005 remote address = 192.168.0.3:50121 ] [ glacier2router: Network: closing tcp connection local address = 127.0.0.1:32785 remote address = 127.0.0.1:47850 ] [ glacier2router: Network: stopping to accept tcp connections at 192.168.0.3:10005 ] [ glacier2router: Network: stopping to accept tcp connections at 127.0.0.1:32785 ]
My glacier2 config fileGlacier2.Client.Endpoints=tcp -h 192.168.0.3 -p 10005 Glacier2.Server.Endpoints=tcp -h 127.0.0.1 Glacier2.SessionManager=ChatSessionManager:tcp -h 127.0.0.1 -p 10001 Glacier2.PermissionsVerifier=verifier:tcp -h 127.0.0.1 -p 10001 Glacier2.SessionTimeout=30 Ice.Trace.Network=3 Ice.Trace.Protocol=3 Ice.Warn.Connections=3
ChatService code_adapter=communicator->createObjectAdapter(name); Ice::Identity id=Ice::stringToIdentity("ChatServer/ChatServer"); _adapter->add(new Oz::Chat::PermissionsVerifierI,Ice::stringToIdentity("verifier")); _adapter->add(new Oz::Chat::SessionManagerI,Ice::stringToIdentity("ChatSessionManager")); Oz::Chat::ChatServerPtr server=new Oz::Chat::ChatServerI(id); _adapter->add(server,id); _adapter->activate();
I atacht here my icepacnode cofing files0 -
If the type of the ChatSessionManager object is ::Chat::ChatSessionManager then the descriptor should indeed use ::Chat::ChatSessionManager.
It's difficult to say exactly what could be wrong without more information. The Ice.Default.Locator configuration property is missing from your Glacier2 configuration file however, can you add it and see if this helps?
Benoit.0 -
Glacier2 + IcePack runing ok
Hi
thanks for your observation beniot I added the Ice.Default.Locator and put the id of receiver and sesionManager and comunication between IcePack and Glacier2 are now runing ok and i can crete a session from my client.
expecial thanks to Matthews for the article about connection managament0