Apache Axis

from Wikipedia, the free encyclopedia
Apache Axis

Axis 1 logo

Axis 2 logo

Basic data

developer Apache Software Foundation
Current  version Axis: 1.4
April 22, 2006

Axis2: 1.7.9
November 16, 2018

operating system cross-platform
programming language C ++
category Web service
License Apache license 2.0
axis.apache.org/axis
axis.apache.org/axis2

Apache Axis ( A pache e X tensible I nteraction S ystem ) is a SOAP storage engine to construct it based web services and clients . There are implementations in C ++ and Java .

Apache Axis is a new development and successor to Apache SOAP, which is based on the IBM SOAP framework . The aim of this new development was to achieve higher speed, flexibility, component orientation, abstraction of the transport framework and the support of WSDL .

AXIS achieves the higher speed by using the SAX parser, while Apache SOAP, in contrast, is based on a slower DOM parser. Like all other current web service frameworks , Axis2 uses StAX , which has a further speed advantage over SAX.

operation area

Axis is often operated as a Java servlet within a servlet container (for example Apache Tomcat ) that offers web services for Java classes. The JAVA2WSDL and WSDL2JAVA tools support the developer in automatically generating a robust interface in Java without having to deal directly with the functionality of SOAP.

For simple applications, Axis offers that Java applications can be made available directly as JWS (Java Web Services). From this, Axis automatically generates a usable web service including a WSDL description, which can be read out over the network in order to develop a corresponding client.

Supported standards

Axis supports the standards SOAP 1.1, 1.2, MTOM (only Axis2) and WSDL 1.1 of the W3C . SAAJ 1.1 (SOAP with Attachments API for Java) from Sun Microsystems is also supported.

It also supports the W3C specifications WS-Reliable Messaging , WS-Security , WS-AtomicTransaction , WS-Addressing , WS-Policy and WS-MetadataExchange.

Deployment

Web services can be integrated into Axis via WSDD files (XML documents) using the admin servlet. This is why deploy.wsdd , undeploy.wsdd and / or server-config.wsdd files are often used for this purpose .

Example ( Tomcat , JBoss ) of a server-config.wsdd that installs a web service "Hello" with a suitable WSDL under Apache-Axis:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Use this file to deploy some handlers/chains and services      -->
<!-- Two ways to do this:                                           -->
<!--   java org.apache.axis.client.AdminClient deploy.wsdd          -->
<!--      after the axis server is running                          -->
<!-- or                                                             -->
<!--   java org.apache.axis.utils.Admin client|server deploy.wsdd   -->
<!--      from the same directory that the Axis engine runs         -->
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <!-- Services from HelloService WSDL service -->
  <service name="Hello" provider="java:RPC" style="wrapped" use="literal">
    <parameter name="wsdlTargetNamespace" value="http://xkurs.de"/>
    <parameter name="wsdlServiceElement" value="HelloService"/>
    <parameter name="schemaQualified" value="http://xkurs.de"/>
    <parameter name="wsdlServicePort" value="Hello"/>
    <parameter name="className" value="xde.kurs.Hello"/>
    <parameter name="wsdlPortType" value="Hello"/>
    <parameter name="typeMappingVersion" value="1.2"/>
    <operation xmlns:operNS="http://xkurs.de"
        xmlns:retNS="http://xkurs.de"
        xmlns:rtns="http://www.w3.org/2001/XMLSchema"
        name="sayHello"
        qname="operNS:sayHello"
        returnQName="retNS:sayHelloReturn"
        returnType="rtns:string" soapAction="">
      <parameter xmlns:pns="http://xkurs.de"
          xmlns:tns="http://www.w3.org/2001/XMLSchema"
          qname="pns:s" type="tns:string"/>
    </operation>
    <parameter name="allowedMethods" value="sayHello"/>
  </service>
</deployment>

Development environment

Eclipse can be used with the Lomboz plug-in to develop AXIS web services and clients . As of version 6.1, Netbeans also includes the ability to generate Axis2 web services and clients.

Apache Axis2

The next generation of Apache Axis has been available since February 2005 with Apache Axis2 . It is a completely new development that surpasses the classic Axis in terms of speed, flexibility and user-friendliness. There are implementations in C and Java.

AXIOM

Axis2 uses its own object model called AXIOM (Axis Object Model) . It is based on the Streaming API for XML and is therefore much more memory-efficient than DOM , for example , since child elements are only processed when required.

Data binding

With data binding it is possible to use XML content in a programming language as objects. Axis2 offers the Axis2 Databinding Framework (ADB) for this . However, other technologies such as XMLBeans , JAXB and JiBX are also supported.

Deployment

Structure of a service archive

Axis2 also differs from Axis 1.x in that it is easier to deploy . The mechanism is similar to the archive-based Java EE deployment. The class files and descriptors of the service are combined in a JAR archive and  stored in a specific folder - the repository . The service archive must have a certain structure and have the ending .aar.

In order to achieve high availability, Axis2 has two important functions:

Hot deployment
A web service can be integrated into the system at runtime without having to restart the server.
Hot update
Changes to the web service can be made without having to stop the system beforehand. This feature is particularly useful in a development environment.

See also

literature

Web links

Individual evidence

  1. Releases. In: apache.org/axis2. Retrieved February 8, 2019 .
  2. SW Eran Chinthaka: Introducing AXIOM: The Axis Object Model ( Memento from September 13, 2007 in the Internet Archive )
  3. Axis2 Databinding Framework
  4. Deepal Jayasinghe: The Axis2 deployment model, Part 1: Six ways the Axis2 deployment model is more user friendly