Archived
This forum has been archived. Please start a new discussion on GitHub.
Templates with session activation
Hello,
I have looked at the session activation example and have tried to templatise it. The original is as follows:
I amended it by following the IceGrid simple example "application_with_template.xml" to give the following:
I start up an icegridnode as in the sessionActivation example and run icegridadmin to apply the above configuration.
When I start the client from sessionActivation it throws an exception "object not registered with registry". I presume it is looking for allocatable object "hello" instead of "hello-${index}". However, I still want the code to look for "hello". Do you know how I can achieve this or have I mis-configured the application?
Thanks,
Keith
I have looked at the session activation example and have tried to templatise it. The original is as follows:
<icegrid>
<application name="Session">
<node name="localhost">
<server id="SessionServer" exe="./server" activation="session">
<adapter name="Hello" endpoints="tcp">
<allocatable identity="hello" property="Identity"/>
</adapter>
</server>
</node>
</application>
</icegrid>
I amended it by following the IceGrid simple example "application_with_template.xml" to give the following:
<icegrid>
<application name="Session">
<server-template id="SessionServer">
<parameter name="index"/>
<server id="SimpleServer-${index}" exe="./server" activation="session">
<adapter name="Hello" endpoints="tcp">
<allocatable identity="hello-${index}" type="::Demo::Hello"/>
</adapter>
</server>
</server-template>
<node name="localhost">
<server-instance template="SessionServer" index="1"/>
</node>
</application>
</icegrid>
I start up an icegridnode as in the sessionActivation example and run icegridadmin to apply the above configuration.
When I start the client from sessionActivation it throws an exception "object not registered with registry". I presume it is looking for allocatable object "hello" instead of "hello-${index}". However, I still want the code to look for "hello". Do you know how I can achieve this or have I mis-configured the application?
Thanks,
Keith
0
Comments
-
Hi,
You should change:<allocatable identity="hello-${index}" type="::Demo::Hello"/>
To:<allocatable identity="hello" type="::Demo::Hello"/>
If you want to register the hello allocatable object instead of hello-${index}. It's not clear to me why you would want to do this however. By using a fixed identity for this object, you won't be able to deploy multiple servers (since only one server instance can register a given well-known object) so using a template here won't be really useful.
If you need additional clarifications on this, could you detail a little more what you are trying to achieve?
Cheers,
Benoit.0 -
Hi Benoit,
My aim is to have multiple servers all providing the Hello proxy for multiple clients to be able to use. Ultimately, I may have several icegridnodes each running numerous instances of the SessionServer. I need them each to be allocatable, but if I use "hello-${index}" as their identity, how does the client find a single server that exposes the "hello" proxy? Essentially, I don't want the client to need hard-coding to a particular id, i.e. "hello-1" in order to allocate an object.
Let me know if you require more information.
Thanks,
Keith0 -
Hi,
Instead of allocating the object by id, your clients should allocate the object by type, see the demo/IceGrid/allocate demo for an example (deployed using with application-multiple.xml).
This way, your client don't need to know the identity of the object. Instead, the IceGrid::Session allocateByType method returns one of the available object.
Cheers,
Benoit.0 -
Hi Benoit,
Thanks for the advice.
It's working as I need now.
Keith0