Thursday, October 18th, 2007

Enunciate your web APIs

Category: GWT, Java

<p>Enunciate is an open source framework that allows you to automatically build, package, deploy, and to clearly, accurately deliver your Web service API on the Java platform.

It will automatically give you multiple endpoints (SOAP, REST, JSON, GWT-RPC, etc.), generate client code, and give you full documentation.

The new 1.4 release also includes support for publishing your JAX-WS endpoints as GWT-RPC endpoints, including generating the GWT client-side code for invoking the endpoints via Ajax.

Features

Full User Documentation

Enunciate will generate full user-level documentation to describe your web API. The content for the documentation is
taken from the documentation of the original source code (i.e. Javadoc),
consolidating the maintenance of your entire Web service contract to a single place.

  • Consolidated, Annotated WSDL and Schemas

     

    The common WS stack will provide a WSDL for an endpoint when queried. Generally, the WSDL is generated at runtime, the
    associated schema is inline, the semantic constructs (i.e. namespaces, message names, argument ids, etc.) are awkward
    and inconsistent, and the scope is limited to that specific endpoint. The XML contract is difficult to interpret (especially
    when being consumed for client-side stubs) and doesn’t give a consolidated picture of the whole API because it has no reference
    to other endpoints and schema data that service the same namespace
    (click here for a more
    complete discussion
    ).

    Enunciate generates the formalized XML contract at compile-time, providing for a consolidated, efficient XML definition.
    Core schema data is consolidated into a single set of schema documents (grouped by namespace), and multiple endpoints
    that service the same namespace are put into a single WSDL. This allows for a wider, cleaner picture of the formal contract
    and relieves the consumer of the consolidation work.

  • Multiple Endpoints: SOAP, REST, JSON, GWT-RPC, etc.

     

    Enunciate will publish your endpoint class as a SOAP endpoint as defined by the JAX-WS annotations (powered by XFire). By supplying additional metadata, the same endpoint class will be published
    as a XML REST endpoint at a different URL. Furthermore, certain REST endpoints will be automatically available as JSON
    endpoints at yet another URL.

    Also, by enabling the GWT module, your endpoints will be published via
    GWT-RPC along with the client-side GWT code for invoking those endpoints via AJAX.

  • Client Code Generation

     

    Enunciate will generate client code for multiple platforms to interface remotely with your published API. Not only is
    the generated code fully documented, but it is simple, elegant and efficient. Enunciate does not generate
    client code from the WSDL but instead reflects it from the original source code, allowing code documentation to be carried over
    and preserving valuable information like method signatures, class structure, and variable names.

    Currently, Enunciate generates code for the Java 1.4 platform and the Java 5 platform, but has plans to add modules that
    generate code for the .NET and C/C++ platforms in the future. Consult the roadmap for
    information on other modules in the pipe and how you can help.

  • Full App Packaging

     

    Enunciate packages your API, extended with each of the above features, into a single web application archive (war file). Drop the war
    file into your favorite J2EE container, and consider your web API enunciated.

  • Related Content:

    1 Comment »

    Comments feed TrackBack URI

    Awesome. I randomly don’t expect Java-related stuff to show up here, but this is a nice treat as I’ve been sort of looking for something like this for a while.

    Comment by Ivan — October 18, 2007

    Leave a comment

    You must be logged in to post a comment.