I'm trying to figure out how to implement a service
(actually, a bunch of services) and I'd like to hear
(informed) opinions from the list on two questions.

I'm attempting to expose the reporting portion of an
XML-based ERP system via web services.  The ERP system
has a mechanism that permits users to build reports. 
I'd like to expose every report as a web service. 
Some of the reports take parameters, others don't.

(Since my system is XML-based I've already created a
message service that takes XML in and returns XML.  I
don't want to use that as the basis for the reports
because it requires knowing XML and knowing the
system's schema.) 

I'd rather each report was exposed as an operation, so
a developer (or tool) could look at the WSDL and
invoke the operations they wished, passing the
necessary parms and understanding what was returned.  

So question #1: What's the best way to generate the
WSDL?  I know I can create a file w/ the WSDL and
reference it via the wsdlFile attribute, but I'd like
to create it dynamically when someone asks for it
since the user reports can be changed.  Can I do it by
implementing a QSHandler for the ?wsdl query?

I also don't want to create Java classes for all of
the complexTypes (Invoice, Customer, Vendor, Employee,
etc) because there are many of them and they also can
change.  What I'd like to do is build the report
request directly from the SOAPElements in the request,
run the report, and then generate the SOAPElements in
the response.

This is what org.apache.axis.providers.RPCProvider
does (by invoking the method referenced in the
<service> tag).  Is the best approach to simply
implement my own Provider, basing it on RPCProvider? 
Or is there a better approach?  Being a lazy
programmer, I want to write as little code as possible
and leverage as much of Axis as possible.

Thanks for any thoughts.

Reply via email to