axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rodrigo Ruiz <rr...@gridsystems.com>
Subject Re: Adding own handler in Java Code?
Date Tue, 04 Jul 2006 09:05:49 GMT
Hi Jansen,

Ideally you should be able to create a custom chain and deploy it in 
your client-config.wsdd as an actual chain. Unfortunately, Axis WSDD 
syntax does not allow to deploy custom chains. When you put a <chain> 
tag, it always creates a SimpleChain instance.

I would create a JIRA report to ask for the ability to specify a 
different class name for the Chain implementation. Something similar to 
the type attribute for handlers.

In the meantime, you could try to write your own custom chain and deploy 
it as any other regular handler. Your chain would allow you to configure 
the list of handlers to be included, *before* performing the call, 
through the MessageContext, or any other appropriate channel. If I am 
not wrong, setting a property on the service client stub makes it 
available from the MessageContext during handlers invocation.

Configuring the handlers within your custom chain should be straight 
forward once the WSDD syntax is extended. With the current syntax you 
have two options:

1. Use a secondary WSDD file with the contained handler configurations 
and parse it from your chain init() method.

2. Define all your handlers in your wsdd configuration file with unique 
names, set a property for your chain containing a list of handler names, 
and obtain the handler instances from the init() method.

Instead of adding/removing handlers, it is easier to enable/disable 
them. This way, you can initialise all the handlers once, and specify 
its ordering at configuration time. At runtime you will just have to 
supply a list(or set) of the handlers that must be enabled for a call.

I attach a simple template class that may be of help. It implements the 
second option mentioned above.

Regards,
Rodrigo Ruiz

Jansen Werner wrote:
> Thanks for you reply! 
> 
>> -----Original Message-----
>> From: Rodrigo Ruiz [mailto:rruiz@gridsystems.com] 
>> Sent: Monday, July 03, 2006 3:57 PM
>> To: axis-user@ws.apache.org
>> Subject: Re: Adding own handler in Java Code?
>>
>> Hi Jansen,
>>
>> The answer depends on what you mean be "add dynamically". :-)
>>
>> If you mean "add a jar at runtime and have it automatically 
>> recognized", 
>> the answer is that it is very hard. You will need Axis 2 to have this 
>> feature built in, or implement yourself a dynamic 
>> class-loader like the 
>> one used by Axis 2, and a handler with the ability to detect 
>> the changes 
>> at runtime, and call these "dynamic" handlers when appropriate.
> 
> No, I'm lucky, this is not what I meant :)
> 
> 
>> If you mean "selecting a subset among an already well-known set of 
>> available handlers", the answer is that it is easier :-)
>>
>> You will have to create a handler that could act as a 
>> "handler chain", 
>> and put into it the logic to take the decision about what handlers to 
>> actually call when invoked. Depending on what you need, this handler 
>> will have the information needed to find out the handlers to 
>> call (for 
>> example, by parsing a policy), or you may have to include the 
>> mechanisms 
>> to communicate with it from the service implementations or 
>> other points, 
>> and configure it at runtime.
> 
> OK, this sounds like my problem.
> 
> For an example, let's take the LogHandler packaged with axis. How can I
> add this (simple, easy) Handler to Axis at runtime? (And remove it later
> ...).
> 
> I have found a way to access the HandlerRegistry
> (Service.getHandlerRegistry()). But - without deeper knowledge of the
> HandlerChains available - how do I add my Handler (or the LogHandler
> mentioned above)?
> 
>> Just keep in mind that you need to respect the handlers 
>> interface, and 
>> call their methods in the appropriate order. That is, to 
>> initialise them 
>> before invoking them, and the like.
> 
> This is something I will concentrate on when I managed to add the
> LogHandler provided by Axis :)
> 
> Ah, before I forget it again, our Axis version is 1.3 :)
> 
> Thanks in advance :)
> 
> CU
> Werner
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 
> 
> 

-- 
-------------------------------------------------------------------
GRIDSYSTEMS                    Rodrigo Ruiz Aguayo
Parc Bit - Son Espanyol
07120 Palma de Mallorca        mailto:rruiz@gridsystems.com
Baleares - EspaƱa              Tel:+34-971435085 Fax:+34-971435082
http://www.gridsystems.com
-------------------------------------------------------------------

Mime
View raw message