Mike -

> If we start with the idea [Kevin's suggestion] that on the Axis side we
> develop a Web Service that accepts SOAP Requests with an XML payload and
> spins that payload into an HTTP POST/GET to a Struts Application as if
> that POST or GET was coming from a Web Browser.  Then we need not make
> any changes to Struts to accept the request as Struts may not know or
> need to know it was from Axis/SOAP (leave that to the application
> developers).

btw - I was thinking that this might just really be the easiest way to get
something started. It may be better in the long run to try to 'embed' Axis
in Struts directly and have Axis invoke the Struts MVC framwork
programatically. But even so, I think there's value in allowing the Axis
app and the Struts app to be on different servers - so both approaches may
be good to implement.

I think that the HTTP Post interface may be the best place to start because
it looks easier and faster to get going on.

> That presumption then begs some other questions:

> What advantages should this Axis4Struts bring to the table?

Primarily:

 - Allowing developers already familiar with Struts to build Web Services
apps without learning a great deal about Axis.
 - Allow developers to build a basic Axis/Struts app and extend the web
service offerings easily by just adding more 'Action's. I think this may
make it easier to maintain/extend Web Service apps than currently.
 - Allowing developers with existing Struts apps to extend them to handle
non-browser clients (.NET, Swing, JMS, etc.)

> What should we do over and above the minimum accepting of SOAP Requests
> and spinning into an HTTP Browser emulated POST to Struts to add value?

To begin with I'm thinking not much. After we get something built and get
users on it, I believe this will be easier to answer.

> Do we even bother with GET?

Can't see any value for initial release.

> Since any programmer can use commons-httpclient to form his own java
> emulation of a browser POST to struts, what advantage can we bring with
> Axis4Struts?

Any programmer with a .NET client (or other non-java client) can't.

Other tools (such as Cold Fusion) now provide built-in support for making
calls to Axis services. This could be leveraged.

Also, this may not be the only web service that the client app calls. If
you have an app that is accessing a variety of web services and you want to
extend it to leverage some existing functionality in a Struts app, why
force the developer to write http-client posts?

I think there is value in this project.

> What would the WSDL for an Axis4Struts Web Service look like?  What
> messages, what types, etc.

I've put a some thought to this. Here's what I've been thinking:

The HTTP Post to the Struts app requires a few things:

      - A server/host and port
      - A servlet context/module
      - The Action ( ".do") URI
      - Name/Value pairs for data (essentially an array of pairs)

The WSDL should allow for these (and only these) I believe to begin with.
This means the Axis app will be "very thin" to begin with. All items are of
type String.

I believe that it would be appropriate to let the first two (server
host/port and servlet context/module) to be specified at deploy time (in
the Axis wsdd file) to allow for default values. But the client code should
be able to specify them in the SOAP request to over ride the defaults and
allow the Web Service to expose resources from more than one Struts app
through the same Web Service.

> What should we do within the Struts framework to make it easier for
> developers to have a Forward that returned an XML Payload suitable for
> the Axis4Struts Response?

This I've not got a clear vision of. I'm thinking that initially we create
some sort of utility we can pass a form bean to and have it inspect the
bean to find the properties it exposes. Then it could extract the values
and generate an XML response with them. This is a basic start that can be
extended.

Handling Dynabeans and other beans/objects can be added.

Maybe a new form class that extends ActionForm would be useful.

> Should we use primitive types (Strings, Integers, etc.) only in the
> Axis4Struts.WSDL or should we include alternatives with Java complex
> types? (DynaBeans, NVPair[], etc.)

Initially, I'm thinking we simply allow Axis to accept only the data types
that exist in the HTTP POST (i.e., ALL STRING).

.NET support is important so we should ensure we don't use types that it
won't work with. More complex types may be optional, but shouldn't be
required.

> What and how should be do the discovery?  If a single interface with a
> multi-purpose payload for the Form Data is used, how will developers
> accessing the web service determine what the content of the payload
> should be?

Interesting question. Not really sure. I think there is value in being able
to inspect to find 1) which services may exist, and/or 2) what
versions/parameters/etc (essentially metadata) apply for that service.

> What role should other common Struts compatible components like Scaffold
> and JSTL  and other Axis compatible components like WSIF play in
> Axis4Struts?

Haven't thought that far yet!

---------------------------------------------------------------------------
This e-mail message (including attachments, if any) is intended for the use
of the individual or entity to which it is addressed and may contain
information that is privileged, proprietary , confidential and exempt from
disclosure.  If you are not the intended recipient, you are notified that
any dissemination, distribution or copying of this communication is
strictly prohibited.  If you have received this communication in error,
please notify the sender and erase this e-mail message immediately.
---------------------------------------------------------------------------




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to