|
|
Re: How how to send settings for a service call [message #23946 is a reply to message #23865] |
Tue, 31 March 2009 05:27 |
Christian Campo Messages: 596 Registered: July 2009 |
Senior Member |
|
|
As Stefan mentions, a service hook is not specified on the service level but on the global level. Not sure if that it is
such a good place. How would you solve that problem that you describe with a local service ?
Wouldnt you just pass a HashMap that describes the desired behaviour ? Or is that different behavious just user
dependant ? Then accessing the userid (Principal) could control it. Last not least very often the remote service is only
a shallow instance that then delegates to the actual service. So indeed it might be an idea to have two such remote
services each delegating to the same local service but with different paramaters. So a remote Service method
search(lastname) could be delegated to search(lastname,"translate=true, language=de") for one remote service instance
and with a differnt second parm or another.
But we are just guessing here. Did any of that make sense ?
christian campo
Stefan Liebig schrieb:
> Hallo Peter,
>
> If I get you right you do not want to have the information ?language? as
> a separate parameter of your service call, right?
> Instead you would like to transfer this information behind the scenes
> from the client to the server?
> This can be achieved with hooks. You can register on the client side an
> instance of ICallHook as OSGi-service. This service will be called on
> each remote request before (beforeCall(CallContext context)) and after
> (afterCall(CallContext context)) the actual remote call.
> Whithin the beforeCall you can access the CallContext and obtain an
> ICallMessageContext where you can add a request header with your
> information.
> On the server side you have to register the counterpart an instance of
> IServiceHook. This service hook may now access your special information
> and store it in a thread local so that your service can access it.
>
> What that help?
>
> However, the hooks will get called for every remote request.
>
> HTH
>
> Tschüß,
> Stefan
>
>
> Henzler Peter wrote:
>> I have different services on the server side giving data.
>> I want that the client can give some information along with the
>> service call that make the service behave different.
>>
>> Example:
>> I have a service that has many methods to query foo objects on the
>> server.
>> I want also call this service in a way where the language dependent
>> data of the found objects gets translated before returning the result.
>> Instead of duplicate the service and all the methods in it, I want to
>> give some data to the server along with the service call that specify
>> how the service handles that specific call. This could be a map with
>> properties like 'translate=true' and 'languages=de,fr,en'
>>
>> Is there a build-in way to handle that?
>> How can I set data for a single service call so that that data can be
>> read on the server side when the call is processed?
>>
>> Thank you for any answer.
>>
>> Peter
>>
|
|
|
|
Re: How how to send settings for a service call [message #581607 is a reply to message #23865] |
Tue, 31 March 2009 05:27 |
Christian Campo Messages: 596 Registered: July 2009 |
Senior Member |
|
|
As Stefan mentions, a service hook is not specified on the service level but on the global level. Not sure if that it is
such a good place. How would you solve that problem that you describe with a local service ?
Wouldnt you just pass a HashMap that describes the desired behaviour ? Or is that different behavious just user
dependant ? Then accessing the userid (Principal) could control it. Last not least very often the remote service is only
a shallow instance that then delegates to the actual service. So indeed it might be an idea to have two such remote
services each delegating to the same local service but with different paramaters. So a remote Service method
search(lastname) could be delegated to search(lastname,"translate=true, language=de") for one remote service instance
and with a differnt second parm or another.
But we are just guessing here. Did any of that make sense ?
christian campo
Stefan Liebig schrieb:
> Hallo Peter,
>
> If I get you right you do not want to have the information ?language? as
> a separate parameter of your service call, right?
> Instead you would like to transfer this information behind the scenes
> from the client to the server?
> This can be achieved with hooks. You can register on the client side an
> instance of ICallHook as OSGi-service. This service will be called on
> each remote request before (beforeCall(CallContext context)) and after
> (afterCall(CallContext context)) the actual remote call.
> Whithin the beforeCall you can access the CallContext and obtain an
> ICallMessageContext where you can add a request header with your
> information.
> On the server side you have to register the counterpart an instance of
> IServiceHook. This service hook may now access your special information
> and store it in a thread local so that your service can access it.
>
> What that help?
>
> However, the hooks will get called for every remote request.
>
> HTH
>
> Tschüß,
> Stefan
>
>
> Henzler Peter wrote:
>> I have different services on the server side giving data.
>> I want that the client can give some information along with the
>> service call that make the service behave different.
>>
>> Example:
>> I have a service that has many methods to query foo objects on the
>> server.
>> I want also call this service in a way where the language dependent
>> data of the found objects gets translated before returning the result.
>> Instead of duplicate the service and all the methods in it, I want to
>> give some data to the server along with the service call that specify
>> how the service handles that specific call. This could be a map with
>> properties like 'translate=true' and 'languages=de,fr,en'
>>
>> Is there a build-in way to handle that?
>> How can I set data for a single service call so that that data can be
>> read on the server side when the call is processed?
>>
>> Thank you for any answer.
>>
>> Peter
>>
|
|
|
Powered by
FUDForum. Page generated in 0.04159 seconds