Bundle: axis-osgi
Version 0.1.0

Axis OSGi

This is an OSGi bundlification of a standard Axis server.

The bundle is part of the The Knopflerfish Axis 1 package.

Description

The standard Axis server is designed to be running in a servlet version 2.3 environment, while the OSGi HTTP service is based on a servlet 2.1 environment. It should be noted that no modifications have been made to any of the Axis classes, so all code specific to the OSGi port is made as pure "extensions". In addition to the bundlification of the Axis server the axis-osgi bundle offers the ability to export services, registered on the OSGi framework service registry, as SOAP services. It should be noted that for this to work the exported objects must not expose any data types not supported by SOAP (as of Knopflerfish 2.0.5 bean mappings are used for non-standard SOAP types to relax this restriction). In order to export a service object as a SOAP service, the only thing needed is to set a property named "SOAP.service.name" on the registered service. As a convenience org.knopflerfish.service.axis.AxisAdmin.SOAP_SERVICE_NAME is a String constant that holds this name. The property value should be of type java.lang.String and its value will be used as the name of the exposed SOAP service.

The set of service methods exported from a service with the SOAP.service.name property set can be controlled via another service property named, SOAP.service.methods. If not set, or set to the value * then all methods in the registered classes are exposed as web service methods. If set to a string with space separated method names, only those methods will be exposed as web service methods. As a convenience org.knopflerfish.service.axis.AxisAdmin.SOAP_SERVICE_METHODS is a String constant that holds this service property name.

The initial SOAP configuration of the Axis server is given by the file "/axis/server-config.wsdd". In case you want to add some services or for some other reason modify the initial configuration, this is where to do it.

The code to make all this work consist of just a few quite small classes (not counting all Axis classes) so it is quite easy to get an overview of the porting effort. However it took some time experimenting and studying the Axis code to make this work, so some of the code may be harder to understand.

Note that the axis-osgi bundle depends on the commons-logging bundle to be installed an started. Further if your JRE does not support an XML parser you need to provide that as well (e.g Xerces).

The axis-osgi.jar file is quite large, due to the contained axis.jar (and other contained jars). Some of the Axis classes may be left out, e.g. client related classes, in case you will not run any Axis clients on your OSGi framework, WSDL related classes in case you give up the ability for the server to generate WSDL for the SOAP services. These kind of optimizations have not been performed, but is probably possible to perform in case it becomes critical to reduce the required memory footprint.

See Also

SOAP - WebServices

Jar docs

axis-osgi_all-0.1.0

Exported Packages

org.knopflerfish.service.axis
org.apache.axis
org.apache.axis.wsdl
org.apache.axis.types
org.apache.axis.soap
org.apache.axis.client
javax.xml.rpc
javax.wsdl
javax.wsdl.extensions
javax.wsdl.factory
javax.wsdl.xml
javax.xml.namespace
javax.xml.soap
javax.xml.rpc.handler
javax.xml.rpc.handler.soap
javax.xml.rpc.holders
org.apache.axis.description
org.apache.axis.encoding
org.apache.axis.enum
org.apache.axis.utils
org.apache.axis.configuration