Details of Supported Service Protocols

Java Rice Client

As Consumer

If configured for the KSB, a Java Rice Client can invoke any service in the KSB Registry using these protocols:

  1. Synchronously

    • SOAP WS p2p using KSB Spring configuration

    • Java call if it is within the same JVM

    • Spring HTTP Remoting

  2. Asynchronously

    • Messaging Queues – As a Consumer, a Java Rice Client can invoke a one-shot deal for calling a KSB-registered service asynchronously

    • Java, SOAP, Spring HTTP Remoting

    • Messaging Topics - As a Consumer listening to a topic, the Java Rice Client will receive a broadcast message

As Producer

You can register Spring-defined services in the KSB Registry through the KSB Configurer. Consumers can call these services as described in other sections.

Any Java Client

As Consumer

A Java Client, regardless of whether or not it's a Rice Client configured for the KSB, can invoke any web service:

  1. As a SOAP WS p2p using a straight-up WS call through XFire (CXF), Axis, etc. If the external web service is not registered on the KSB, the Java client must discover the service on its own.

  2. Through Java if they are within the same JVM

  3. Through Spring HTTP Remoting; you must know the endpoint URL of the service.

As Producer

  1. Currently, you can't leverage the KSB and its registry for exposing any of its services. It is possible to bring up the registry and register services without the rest of the KSB.

  2. A Java Client can expose its web services directly using XFire (CXF), Axis, etc.

  3. You can bring up only the registry for discovery. However, the registry can't be a 'service;' it can only be a piece of code talking to a database.

Non-Java/Non-Rice Client

As Consumer

A non-Java/non-Rice Client that knows nothing about the KSB or its registry can only invoke web services synchronously using:

  • SOAP WS p2p using straight-up WS call through native language-specific WS libs

  • Discovery cannot be handled by leveraging the KSB Registry at this time.

As Producer

  1. Currently cannot register services on KSB in registry

  2. Can still produce services, but they can’t be called leveraging the KSB; clients need to discover and invoke the services directly (on their own).

Future Enhancement to KSB: Remote the KSB Registry as a Service

These are represented by the red lines in the diagram.

  1. Expose the KSB registry as a SOAP available service, allowing non-Java clients to easily have:

    • A method to discover available services and what protocols they can be invoked through

    • A callback URL that is passed to the registry to let the publishers and consumers know when the KSB Registry has been updated

    • A method to register external web services, their WSDLs, and other meta-data in the KSB Registry for discovery

    • A connector to make creation of an XFire (CXF) dynamic SOAP object for Java clients that want to talk to these services without having a backing Java interface. (This may require some changes in the proxies that facilitate Async messaging.)

  2. Certainly, any Java Rice Client could invoke any of these services either p2p via SOAP WS or through the Messaging protocols.

Additional Options Once Registry is a Service:

  • Bring up centralized queues and topics that sit on top of a PHP or another deployed web service