blob: bd9a3d905958b88085c71399e7128ac36c52c4f5 [file]
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<document xmlns="http://maven.apache.org/XDOC/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
<properties>
<title>Apache Axis2/Java - Next Generation Web Services</title>
</properties>
<body>
<h1>Welcome to Apache Axis2/Java</h1>
<p>Apache Axis2&#x2122; is a Web Services JSON / SOAP / WSDL engine, the successor to the
widely used <a href=
"https://ws.apache.org/axis/">Apache Axis</a> SOAP stack. Axis2 serves
the same business logic through multiple protocols simultaneously &#x2014;
JSON-RPC, REST, and <a href="docs/mcp-architecture.html">MCP (Model Context Protocol)</a>
&#x2014; from a single service deployment.
There are two implementations
of the Apache Axis2 Web services engine - Apache Axis2/Java and
Apache Axis2/C.</p>
<p>While you will find all the information on Apache Axis2/Java
here, you can visit the <a href=
"https://axis.apache.org/axis2/c/core/"><strong>Apache Axis2/C</strong></a>
Web site for Axis2/C implementation information.
<strong>Apache Axis2/C 2.0.0 has been released</strong> &#x2014; the first
release since 1.6.0 (2009). Axis2/C 2.0.0 adds HTTP/2 transport via
Apache httpd, JSON support via json-c, OpenAPI spec generation, and
an MCP stdio server with
the same tool schemas as Axis2/Java &#x2014; enabling AI assistants to call
native C services on edge devices, Android phones, and IoT gateways
where a JVM cannot run. The same MCP client connects to both Axis2/Java
(enterprise) and Axis2/C (embedded) with identical protocol and identical
results. See the
<a href="https://axis.apache.org/axis2/c/core/">Axis2/C site</a> for details.</p>
<p><strong>Apache Rampart 2.0.0 is ready for release</strong> and will ship
immediately after Axis2/Java 2.0.1, on which it depends. Rampart 2.0.0
brings WS-Security up to date with the Jakarta EE 9+ / Axis2 2.0.x line
(<code>jakarta.*</code> namespaces, modern WSS4J, current OpenJDK support)
so legacy SOAP services with WS-Security policies can run unchanged on
the same Tomcat 11 / WildFly 32 / WildFly 39 stack as the rest of
Axis2/Java. Minimum OpenJDK version is 17; tested with the same
server/JDK combinations listed below. See the
<a href="https://axis.apache.org/axis2/java/rampart/">Apache Rampart
site</a> for details.</p>
<p>Apache Axis2, Axis2, Apache, the Apache feather logo, and the Apache Axis2 project logo are trademarks of The Apache Software Foundation.</p>
<h3><em>Why Apache Axis2 in 2026:</em></h3>
<p><strong>One service, three protocols.</strong> Axis2 is the only Java framework
that serves JSON-RPC, REST+OpenAPI, and
<a href="docs/mcp-architecture.html">MCP</a> from a single service class &#x2014;
no code duplication, no wrapper layers. Add the
<a href="docs/spring-boot-starter.html">Spring Boot Starter</a> dependency and
your services are live on a modern application server. <strong>Minimum
OpenJDK version is 17.</strong> Tested configurations: Tomcat 11 with
OpenJDK 21 and OpenJDK 25, WildFly 32 with OpenJDK 21, and WildFly 39
with OpenJDK 25.</p>
<p>The architecture that made this possible was designed at the August 2004 Summit
in Colombo, Sri Lanka. Its handler chain &#x2014; a pipeline of phases that
processes every message regardless of wire format &#x2014; turned out to be the
ideal foundation for multi-protocol support twenty years later. Security handlers,
logging handlers, and custom interceptors written for SOAP apply unchanged to
JSON-RPC, REST, and MCP traffic. See the
<a href="docs/Axis2ArchitectureGuide.html">Architecture Guide</a> for details.</p>
<p>Axis2 supports SOAP 1.1/1.2, REST,
<a href="docs/json_support_gson.html">JSON-RPC</a> (via Moshi or GSON),
<a href="docs/openapi-rest-userguide.html">OpenAPI 3.0 auto-generation</a>
with Swagger UI, and
<a href="docs/json-rpc-mcp-guide.html">MCP tool catalogs</a> for AI agents.
<a href="docs/http2-integration-guide.html">HTTP/2 support</a> is built into
the serialization pipeline &#x2014; streaming JSON formatters flush every 64 KB,
converting buffered responses into HTTP/2 DATA frames during serialization,
not after. Response field selection (<code>?fields=</code>) filters at the
serialization layer with zero overhead when unused. Most frameworks treat
HTTP/2 as a transparent container feature; Axis2 integrates it into the
message formatter.
Legacy SOAP services continue to work unchanged &#x2014; the SOAP handler chain,
WS-Security (<a href="https://axis.apache.org/axis2/java/rampart/">Apache Rampart</a>),
and WS-Addressing are fully supported.</p>
<p>Axis2 comes with many new features, enhancements and industry
specification implementations. The key features offered are as
follows:</p>
<ul>
<li>
<p style="margin-bottom: 0in"><strong>Speed</strong> - Axis2 uses
its own object model and StAX (Streaming API for XML) parsing to
achieve significantly greater speed than earlier versions of Apache
Axis.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Low memory foot
print</strong>- Axis2 was designed ground-up keeping low memory
foot print in mind.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>AXIOM</strong> - Axis2 comes
with its own light-weight object model, AXIOM, for message
processing which is extensible, highly performant and is developer
convenient.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong><a name="Hot_Deployment" id=
"Hot_Deployment"></a>Hot Deployment</strong> - Axis2 is equipped
with the capability of deploying Web services and handlers while
the system is up and running. In other words, new services can be
added to the system without having to shut down the server. Simply
drop the required Web service archive into the services directory
in the repository, and the deployment model will automatically
deploy the service and make it available for use.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Asynchronous Web
services</strong> - Axis2 now supports asynchronous Web services
and asynchronous Web services invocation using non-blocking clients
and transports.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Flexibility</strong> - The
Axis2 architecture gives the developer complete freedom to insert
extensions into the engine for custom header processing, system
management, and <em>anything else you can imagine</em>.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Stability</strong> - Axis2
defines a set of published interfaces which change relatively
slowly compared to the rest of Axis.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Component-oriented
Deployment</strong> - You can easily define reusable networks of
Handlers to implement common patterns of processing for your
applications, or to distribute to partners.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Transport Framework</strong>
- We have a clean and simple abstraction for integrating and using
Transports (i.e., senders and listeners for SOAP over various
protocols such as SMTP, FTP, message-oriented middleware, etc), and
the core of the engine is completely transport-independent.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>WSDL support</strong> - Axis2
supports the Web Service Description Language, version <a href=
"http://www.w3.org/TR/wsdl">1.1</a>, which allows you to easily
build stubs to access remote services, and also to automatically
export machine-readable descriptions of your deployed services from
Axis2.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>JSON support</strong> - Axis2
supports the creation of Web Services using JavaScript Object Notation, with <a href=
"https://github.com/google/gson">GSON</a> and <a href=
"https://github.com/square/moshi">Moshi</a>, which allows you to easily
build POJO based services that receive and return JSON.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>OpenAPI support</strong> - Axis2
supports automatic generation of <a href=
"https://spec.openapis.org/oas/latest.html">OpenAPI 3.0</a> specifications for REST and JSON services, with integrated <a href=
"https://swagger.io/tools/swagger-ui/">Swagger UI</a> for interactive API documentation and testing, enabling modern API development workflows.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>MCP support</strong> - Axis2
supports <a href="https://modelcontextprotocol.io/">Model Context Protocol</a> (MCP),
enabling AI assistants (Claude, custom agents) to discover and call Axis2 services
as tools. The <a href="docs/json-rpc-mcp-guide.html">MCP tool catalog</a> is
auto-generated from deployed services at <code>/openapi-mcp.json</code> with full
parameter schemas, types, and defaults. An <a href="docs/mcp-architecture.html">MCP
bridge</a> (stdio JAR) connects Claude Desktop to any Axis2 deployment over
HTTPS+mTLS. See <a href="docs/mcp-examples.html">live benchmark examples</a> with
performance data.</p>
</li>
<li>
<p style="margin-bottom: 0in"><strong>Composition and
Extensibility</strong> - Modules and phases improve support for
composability and extensibility. Modules support composability and
can also support new WS-* specifications in a simple and clean
manner. They are however not <a href="#Hot_Deployment">hot
deployable</a> as they change the overall behavior of the
system.</p>
</li>
</ul>
<p>We hope you enjoy using Axis2. Please note that this is an
open-source effort. If you feel the code could use new features or
fixes, or the documentation can be improved, please get involved
and lend us a hand! The Axis developer community welcomes your
participation.</p>
<p>Let us know what you think! Send your feedback on Axis2 to
"<a href=
"mailto:java-user@axis.apache.org">java-user@axis.apache.org</a>". Make
sure to prefix the subject of the mail with [Axis2].</p>
</body>
</document>