Hi Stefan!

> I wrote my own provider but I cant test it, because
> I didnt find anything about deploying providers.
> 
> How can I tell Axis to use my Provider for some service ?
> Is there a possibility to tell axis that java:MyRPC is 
> of class package.MyRPCProvider in the server-config.wsdd ?

I just did this, and I must say the documentation was not a great help.  I'll try to 
summerize what I did.  If anybody has tips on a better way to do it, please add your 
advice.

My service is a standard Java class, but all methods have an extra argument at the 
end.  This argument is a SecurityContext, and is not provided by the user of the 
service. It is provided by a custom provider.

The custom provider is a class implementing the Handler interface.

In my case I subclass the RPCProvider class, and override the invokeMethod() method, 
and add my extra argument before calling super.invokeMethod().

To deploy the service with a custom provider set your provider attribute in the 
service tag to "Handler", and add a parameter tag with the name of the custom provider 
class.  The first parameter tag below indicates which provider to use.  The second 
indicates the backend service class to use, as with the standard RPCProvider.

Example:

<service name="MyService" provider="Handler">
        <parameter name="handlerClass"
                value="mypackage.MyProvider" />

        <parameter name="className"
                value="mypackage.MyServiceImpl" />
        <parameter name="allowedMethods" value="*" />
</service>

I would have expected to be able to put the class name directly in the provider 
attribute of the service tag, and also be able to refer to a previously defined 
handler like this:

<handler name="MyHandler" 
        type="mypackage.MyProvider" />

<service name="MyService" provider="java:mypackage.MyProvider">
        <parameter name="className"
                value="mypackage.MyServiceImpl" />
        <parameter name="allowedMethods" value="*" />
</service>

<service name="MyService" provider="MyHandler">
        <parameter name="className"
                value="mypackage.MyServiceImpl" />
        <parameter name="allowedMethods" value="*" />
</service>

If someone can tell me how this can be done, I'd be very happy :)


donV

Reply via email to