Currently there's no easy way to plug in an additional kind of service
adapter (to support a protocol other than SOAP or Vinci).  UIMA
already has the foundation for pluggable adapters, with its use of
descriptors and factory methods that produce Resource objects (like
AnalysisEngines) from descriptors.  But we've never provided a way for
users to plug in their own adapter classes without editing internal
framework configuration files.  Here's a simple suggestion that would
change that:

We could add a new ResourceSpecifier (descriptor) type:
<customResourceSpecifier xmlns="http://uima.apache.org/resourceSpecifier";>
        <resourceClassName>com.foo.MyCustomServiceAdapter</resourceClassName>
        <parameters>
                <parameter name="serviceEndpoint" value="hostname:port"/>
                ...
        </parameters>
</customResourceSpecifier>

The <resourceClassName> specifies the exact name of some user class
which must be located on the classpath (the UIMA extension classpath
will work, if provided).  That class must implement the UIMA Resource
interface (for an AE service adapter it would also have to implement
the AnalysisEngine interface).  The Resource interface provides a
method initialize(ResouceSpecifier,Map) which the factory calls and
passes the resource specifier.  The user would implement the
initialize method to read the <parameters> and set itself up.

All the basic support for this is already there.  It's relatively easy
to add a new kind of ResourceSpecifier and the associated factory for
instantiating the Resource from the specifier.  Then there would be
the documentation about how to implement your resource class, which
would be a little more work.

Thoughts?

 -Adam

Reply via email to