(Added axis-dev to CC: list)

Howdy,

I'm in the process of designing an Axis2-based binding component and
wanted to solicit feedback and review before I get too far.

The BC would support two main use-cases:

-expose internal JBI components over protocols/transports supported by Axis2
-allow JBI components to access external web services using Axis2

To expose an internal service, one would create a service unit that
would identify the internal service, and provide an Axis2 services.xml
descriptor to configure the processing chain, binding and port
information (e.g. protocol, transport, policy, security, ...)

At runtime, the BC would obtain the internal service description (WSDL)
via Component.getDescription() and update its binding and port
information according the Axis2 configuration such that the resulting
WSDL can be provided dynamically to external consumers (e.g. via HTTP GET).

For external services, one would create a service unit containing a
service description (WSDL) and an optional Axis2 services.xml descriptor
if a special processing chain is required.

The BC would then expose this external service on the JBI bus, which may
then be resolved using service type, service name, service endpoint,
external endpoint and (eventually) service reference.

The BC descriptor would look something like this:

<Axis2BC-descriptor>
  <service>
      <type>internal/external</type>

      <!-- route element only valid if service type is "internal" -->
      <route>
          <interfaceName>QName</interfaceName>
          <serviceName>QName</serviceName>
          <endpoint>NCName</endpoint>
      </route>
  </service>
</Axis2BC-descriptor>

And the service unit layout would look like this:

meta-inf/jbi.xml        (JBI service unit descriptor)
meta-inf/Manifest.mf    (JAR manifest)
meta-inf/services.xml   (Axis2 service descriptor)
MyExternalService.wsdl  (WSDL for external service, if applicable)

That's what I've got so far.  I have ideas on additional features for
the BC but I want to get the basics right first.

BTW, is anybody already working on something similar?  Maybe we can work
together.  Also, if anyone is interested in helping out during the early
development stage, please let me know and we could arrange to setup a
shared repository.

cheers,
alex

Reply via email to