blob: e9a4e7e9fccd283c9a9245fa4ea10e1086092938 [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>
<h3>Key Features</h3>
<ul>
<li><strong>JSON-RPC with
<a href="https://github.com/google/gson">Gson</a> and
<a href="https://github.com/square/moshi">Moshi</a></strong> &#x2014;
build POJO-based services that receive and return JSON. Streaming
formatters flush every 64 KB for memory-efficient large responses.</li>
<li><strong><a href="docs/openapi-rest-userguide.html">OpenAPI 3.0</a>
auto-generation</strong> &#x2014; specifications generated from deployed
services with integrated
<a href="https://swagger.io/tools/swagger-ui/">Swagger UI</a> for
interactive API testing.</li>
<li><strong><a href="docs/json-rpc-mcp-guide.html">MCP tool catalogs</a>
for AI agents</strong> &#x2014; AI assistants discover and call your services
as tools via the auto-generated catalog at <code>/openapi-mcp.json</code>.
See <a href="docs/mcp-examples.html">live examples</a>.</li>
<li><strong><a href="docs/http2-integration-guide.html">HTTP/2
streaming</a></strong> &#x2014; integrated into the serialization pipeline,
not just the transport layer. Response
<a href="docs/json-streaming-formatter.html#Field_Selection">field
selection</a> (<code>?fields=</code>) filters at serialization time.</li>
<li><strong><a href="docs/spring-boot-starter.html">Spring Boot
Starter</a></strong> &#x2014; one Maven dependency for servlet registration,
repository configuration, and OpenAPI/MCP activation. Supports WAR
deployment and embedded Tomcat.</li>
<li><strong><a href="docs/openapi-jpa-schema.html">OpenAPI schemas
from Hibernate</a></strong> &#x2014; generate read/write JSON Schemas from
JPA annotations or <code>.hbm.xml</code> files, keeping API contracts
in sync with the database model.</li>
<li><strong><a href="docs/json-pagination.html">Built-in
pagination</a></strong> &#x2014; offset/limit with server-enforced safety
limits, mapping directly to JPA/Hibernate DAOs.</li>
<li><strong><a name="Hot_Deployment" id="Hot_Deployment"></a>Hot
deployment</strong> &#x2014; add or update services without restarting the
server by dropping <code>.aar</code> archives into the services
directory.</li>
<li><strong>SOAP legacy</strong> &#x2014; full SOAP 1.1/1.2 support
including WSDL, WS-Security
(<a href="https://axis.apache.org/axis2/java/rampart/">Apache Rampart</a>),
WS-Addressing, MTOM attachments, and the pluggable handler chain
architecture from the original 2004 design.</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>