You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Donnie Hale <li...@haleonline.net> on 2004/12/23 04:52:19 UTC

Does Axis support this SOAPService/RPCProvider-like functionality?

I want to use as much of Axis' built-in functionality as possible, e.g.
.wsdd deployment and auto-WSDL generation via "?wsdl". I'm wondering if the
current Axis capabilities have the flexibility to support these requirements
(easily, if possible ;) :

- Specify a Java interface rather than a concrete class in the .wsdd file.

- Maintain the "?wsdl" functionality for the methods in that interface.

- Maintain Axis' creation of the method paramters from the SOAP elements and
its handling of method return values.

- Specify a mechanism by which RPCProvider or similar class (really in
JavaProvider) gets an appropriate object which implements that interface and
on which RPCProvider invokes the interface methods. I don't want to just
specify a different class as the implementation class - I really want
something like a factory mechanism. Right now, JavaProvider seems to be
tightly coupled to the notion of taking the specified service classname and,
depending on the specified scope and some built-in caching, getting a class
object based on that name and instantiating a new instance.

This is sort of stream-of-consciousness, but perhaps Axis ought to have a
ServiceObjectFactory interface which JavaProvider uses to get new service
objects, the main parameters to the "getServiceObject" method being the
MessageContext and class name. A default class like
ScopedServiceObjectFactory would be used if no other factory was explicitly
specified. But there would be a way to configure a different factory for a
service that could do whatever it wanted to come up with a service object on
which RPCProvider could invoke methods. Just some thoughts...

If anyone has any ideas on how to do this, I'd appreciate it. I can
elaborate more if what I'm describing isn't clear.

Thanks!

Donnie