Hi All,
Hope all is well.
After working through some interesting issues :) I've updated the
SOAP server for Cocoon that I've been working on in the following
areas:
o SOAP server reader is now based on Axis, rather than Apache SOAP.
o Helper abstract classes have been written allowing webservices
to implement LogEnabled and Composable.
o Several webservices are now included:
o cache (allows you to remotely manipulate the Cocoon cache
via soap, eg. clear it)
o memory (allows you to view the total and free amount of
memory in your Cocoon application, also allows you
to remotely invoke the garbarge collector)
o system (allows you to inspect the hardware your server
is running on)
o process (allows you to run a system process on the server
and view the output. eg. ps, uptime, df, etc)
o Included a small sample webapp which allows you to list the
services currently deployed.
o Moved entire source over to scratchpad, rather than core
The source with libraries is now much larger than the original version,
I'll make it available via http somewhere and enter a bugzilla patch.
Comments, suggestions more than welcome.
Cheers,
Marcus
On Thu, Aug 15, 2002 at 04:30:09PM +0200, Marcus Crafter wrote:
> Hi All,
>
> Hope all is well.
>
> Over the past couple of days I've been working on adding the
> ability for a Cocoon application to serve SOAP requests.
>
> The motivation for this work came from:
>
> o The need to share business logic data with other projects, ie.
> B2B communcation.
>
> o The desire to build an administration application and remotely query
> a live system about its status.
>
> Instead of building a second server into our application (ie. RMI,
> CORBA, etc), I thought it might be better to use SOAP for this for
> several reasons, mainly since servlet based Cocoon applications are
> really HTTP oriented servers anyway.
>
> The code adding this functionality is in bugzilla, #11728.
>
> My hope is that this feature is of use for others too.
>
> Essentially, I took the RPCRouterServlet from the Apache SOAP
> project and ported it to Cocoon as a Reader, which in effect
> allows you to register SOAP services within your Cocoon app, and
> serve data to other clients.
>
> The reader can be configured in the sitemap as follows:
>
> <!-- Defines a SOAP RPC reader that will serve SOAP requests via HTTP-POST.
>
> 'managed-services' defines a list of Apache SOAP deployment descriptors
> that will be automatically deployed at startup and undeployed at
> shutdown of this reader.
> -->
> <map:reader logger="sitemap.reader.soap-rpc" name="soap-rpc"
> src="org.apache.cocoon.reading.SoapRPCReader">
> <managed-services>
> <descriptor
>src="resource://org/apache/cocoon/components/soap/services/memory/DeploymentDescriptor.xml"/>
> </managed-services>
> </map:reader>
>
> Consult the javadocs for the full option set which includes the
> ability to set an EnvelopeEditorFactory, and custom SOAP server xml
> config file.
>
> The pipeline match is quite simple like most readers:
>
> <!-- Match SOAP RPC Router requests -->
> <map:match pattern="rpcrouter">
> <map:read type="soap-rpc" mime-type="text/xml"/>
> </map:match>
>
> With these 2 sections added to your sitemap, you can then make
> HTTP-POST queries to the above pipeline to deploy, list, invoke or
> undeploy particular SOAP services from your Cocoon app. The
> ServiceManagerClient class that comes with Apache SOAP is quite
> useful for this.
>
> I've included an example service with my patch which allows a
> remote client to query the amount of free & total memory the remote
> Cocoon app currently has, and also allows a client to invoke the
> garbage collector on the remote application.
>
> For those interested have a look at the class and deployment
> descriptor in the o/a/c/components/soap/services/memory directory,
> and the webapps/samples/soap directory.
>
> The SoapRPCReader also adds the Cocoon request, response, context
> and ComponentManager to the SOAP request context, which means it's
> possible for your SOAP services to access any avalon components you may
> have written, and also session data that may be relevant for the
> particular request. Have a look at the
> o/a/c/components/soap/services/template directory for an example of
> this.
>
> Normal SOAP services (ie. cocoon independant) can also be deployed,
> including those implemented in other languages via BSF support. The
> Apache SOAP documentation describes how this can be done.
>
> The reader itself requires the presence of the Apache SOAP jar
> (2.3.1 used during development), and the SUN activation and
> javamail jar. I've modified the build.xml so that the reader and
> associated services are only built if these libraries are present.
>
> I'm now looking at the various statistical & administration
> information we might like to provide from Cocoon, hopefully in
> combination with the instrumentation interfaces from Excalibur.
>
> Ok, so I hope its of use for more people that just me, if there's any
> questions, comments, feel free to ask.
>
> Cheers,
>
> Marcus
>
> --
> .....
> ,,$$$$$$$$$, Marcus Crafter
> ;$' '$$$$: Computer Systems Engineer
> $: $$$$: ManageSoft GmbH
> $ o_)$$$: 82-84 Mainzer Landstrasse
> ;$, _/\ &&:' 60327 Frankfurt Germany
> ' /( &&&
> \_&&&&'
> &&&&.
> &&&&&&&:
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>
--
.....
,,$$$$$$$$$, Marcus Crafter
;$' '$$$$: Computer Systems Engineer
$: $$$$: ManageSoft GmbH
$ o_)$$$: 82-84 Mainzer Landstrasse
;$, _/\ &&:' 60327 Frankfurt Germany
' /( &&&
\_&&&&'
&&&&.
&&&&&&&:
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]