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. See the REST module documentation for more information.
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.