Hi, I developed a provider to plugin VisiBroker CORBA servers to AXIS. The development experience was very smooth and the provider was working in no time.
However when I decided to plug this provider seamlessly, I was not able to do so unless I hard coded my provider name along with other providers. I had 2 choices: 1. Use a provider="handler" in my service and then define my actual handler class through parameter "handlerClass" along with other parameters needed by my provider. This works but makes my provider looks second class. It is also ugly because I am mixing the parameters to "handler" provider with the parameters of my real provider. A user would have to do something like: <service name="Animal" provider="handler"> <parameter name="handlerClass" value="com.borland.axis.providers.java.VisiBrokerProvider"/> <parameter name="className" value="com.borland.examples.webservices.visibroker.AnimalModule.Animal"/> <parameter name="allowedMethods" value="talk sleep"/> <parameter name="objectName" value="BigAnimal"/> <parameter name="cacheObject" value="false"/> </service> 2. Hard code my provider in wsdd/WSDDProvider.java. Essentially populate providers Hashtable in this class with my VisiBrokerProvider. This allows the user to treat my provider like any other provider and they will be able to say something like <service name="Animal" provider="VisiBrokerProvider"> </service> Option 2 is good from a user point of view but I can not provide the VisiBroker provider in a separate jar that can be compiled independently. What I really want is better pluggability of a provider. A user should be able to plugin provider just like handlers. Something like <provider name="VisiBrokerProvider" type="java:class-name" /> <service name="Animal" provider="VisiBrokerProvider"> ... params </service> I think as AXIS becomes popular more vendors would like to plugin providers for their "stuff" and not having a first class provider pluggability would hurt AXIS. What do other people think? I can provide the code to make this happen if necessary. Please let me know.