WebServices


Unterpunkte dieser Seite

Apache Axis (unter Windows XP)
WSDL


Apache Axis (unter Windows XP)

Die Standard Distribution lässt sich unter http://ws.apache.org/axis2/download/1_4_1/download.cgi herunterladen.

Die Installation erfolgt über ein einfaches Entpacken des Archivs in einen eigenen Ordner. Sie sollten ein Verzeichnis wählen, dessen Pfad keine Leerstellen enthält, da ansonsten einige Aufrufe in der Kommandozeile scheitern.

Die Umgebungsvariable JAVA_HOME muss auf das Verzeichnis gesetzt werden, in das das JDK installiert worden ist und dann in diesem Verzeichnis auf eines der installierten JDKs. Ein Beispiel ist c:\program files\Java\jdk1.6.0_12. Start > Control Panel > System > Advanced > Environment Variables > System Variables > New. Starten Sie alle eventuel geöffneten Consolen neu, damit die Umgebungsvariable in den Konsolen bekannt wird.

Die Umgebungsvariable AXIS2_HOME sollte gesetzt werden und zwar auf das Verzeichnis, in das die Axis Distribution entpackt worden ist. Start > Control Panel > System > Advanced > Environment Variables > System Variables > New. Starten Sie alle eventuel geöffneten Consolen neu, damit die Umgebungsvariable in den Konsolen bekannt wird.

Öffnen Sie eine Konsole und testen Sie die Umgebungsvariable. Geben Sie dazu ein:
echo %AXIS2_HOME%


Erstellen Sie nun den Stub für die ADB Version eines BeispielWebServices aus der AXIS2 Standarddistribution. Der Code wird aus einer wsdl Datei generiert. Der Code und eine passende ant build.xml wird im aktuellen Verzeichnis abgelegt, in dem Sie den Befehl zur Generation eingetippt haben.

Navigieren Sie in ein Verzeichnis, in dem der Code abgelegt werden soll. Geben Sie folgendes ein:
"%AXIS2_HOME%\bin\WSDL2Java.bat" -uri "%AXIS2_HOME%/samples/wsdl/perf.wsdl" -d adb -s


Obiger Aufruf verwendet die perf.wsdl Datei, die mit der Axis2 Standarddistribution mitgeliefert wurde. Alternativ können Sie auch von http://ws.apache.org/axis2/1_4_1/userguide-codelisting5.html eine wsdl Datei herunterladen, die vom AXIS2 Userguide (http://ws.apache.org/axis2/1_4_1/contents.html) als Axis2UserGuide.wsdl bezeichnet wird.

Falls Sie die Axis2UserGuide.wsdl verwenden, lautet der Aufruf
"%AXIS2_HOME%\bin\WSDL2Java" -uri Axis2UserGuide.wsdl -p org.apache.axis2.axis2userguide -d adb -s
wobei dann die Axis2UserGuide.wsdl in dem Verzeichnis abgelegt sein muss, in dem Sie den Befehl ausführen.

Der Code befindet sich nun in einem Verzeichnis namens src. Es wird ebenfalls eine build.xml im aktuellen Verzeichnis angelegt. Diese Datei wird von Apache ant verstanden und übersetzt den Stub.

WSDL2Java.bat ruft das Code Generation Tool (http://ws.apache.org/axis2/tools/1_0/CodegenToolReference.html) auf. Die Parameter sind auf der Reference aufgelistet. -uri zeigt auf die WSDL Datei, aus der Client Code erzeugt werden soll. -d gibt das DataBinding an. Die einfachste aber auch unflexibelste Art AXIS2 zu verwenden ist das ADB DataBinding. -s führt zu Code, der den Aufruf synchron ausführt, der also auf die Antwort des WebServices wartet bevor das Programm weiterarbeitet.

Um den Client zu programmieren können Sie ant verwenden. Laden Sie apache-ant-1.7.1-bin.zip von http://ant.apache.org/bindownload.cgi herunter. Entpacken Sie das Archiv in ein Verzeichnis und setzen Sie die ANT_HOME Umgebungsvariable darauf. Setzen Sie JAVA_HOME. Stellen Sie sicher, das CLASSPATH nicht gesetzt oder leer ist. Setzen Sie die PATH Variable auf %ANT_HOME%\bin

Speichern Sie den Java Code aus http://ws.apache.org/axis2/1_4_1/userguide-codelisting7.html im Ordner org/apache/axis2/axis2userguide in der Datei Client.java. Geben sie im Verzeichnis, in dem sich die generierte build.xml Datei befindet
ant jar.client
ein. Es entsteht ein Ordner namens build.

Öffnen Sie die jar. Editieren Sie MANIFEST.MF wie folgt:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 11.2-b01 (Sun Microsystems Inc.)
Main-Class: org.apache.axis2.axis2userguide.Client
<leerzeile>
<leerzeile>
Am Ende der Datei müssen zwei Leerzeilen stehen.

Editieren Sie C:\axis2-1.4.1\bin\axis2.bat wie folgt:
@echo off

REM  Licensed to the Apache Software Foundation (ASF) under one
REM  or more contributor license agreements. See the NOTICE file
REM  distributed with this work for additional information
REM  regarding copyright ownership. The ASF licenses this file
REM  to you under the Apache License, Version 2.0 (the
REM  "License"); you may not use this file except in compliance
REM  with the License. You may obtain a copy of the License at
REM  
REM  http://www.apache.org/licenses/LICENSE-2.0
REM  
REM  Unless required by applicable law or agreed to in writing,
REM  software distributed under the License is distributed on an
REM  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
REM  KIND, either express or implied. See the License for the
REM  specific language governing permissions and limitations
REM  under the License.

rem ---------------------------------------------------------------------------
rem Axis2 Script
rem
rem Environment Variable Prequisites
rem
rem   AXIS2_HOME      Must point at your AXIS2 directory
rem
rem   JAVA_HOME       Must point at your Java Development Kit installation.
rem
rem   JAVA_OPTS       (Optional) Java runtime options
rem ---------------------------------------------------------------------------
set CURRENT_DIR=%cd%

rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJavaHome
echo The JAVA_HOME environment variable is not defined
echo This environment variable is needed to run this program
goto end
:gotJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
goto okJavaHome
:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
echo NB: JAVA_HOME should point to a JDK/JRE
goto end
:okJavaHome

rem check the AXIS2_HOME environment variable
if not "%AXIS2_HOME%" == "" goto gotHome
set AXIS2_HOME=%CURRENT_DIR%
if exist "%AXIS2_HOME%\bin\java2wsdl.bat" goto okHome

rem guess the home. Jump one directory up to check if that is the home
cd ..
set AXIS2_HOME=%cd%
cd "%CURRENT_DIR%"

:gotHome
if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome
echo The AXIS2_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end

:okHome
rem set the classes
setlocal EnableDelayedExpansion

rem ----- Execute The Requested Command ---------------------------------------
echo Using AXIS2_HOME:   %AXIS2_HOME%
echo Using JAVA_HOME:    %JAVA_HOME%
set _RUNJAVA="%JAVA_HOME%\bin\java"

%_RUNJAVA% %JAVA_OPTS% -Djava.ext.dirs="%AXIS2_HOME%\lib\\" -Daxis2.repo="%AXIS2_HOME%\repository" -Daxis2.xml="%AXIS2_HOME%\conf\axis2.xml" %*
endlocal
:end
Diese Änderung geht auf einen Bug in einem BugTracker zurück (http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200805.mbox/%3C2101156367.1210197116904.JavaMail.jira@brutus%3E). Unter Windows XP ist das Skript axis2.bat aus der Standarddistribution ohne diesen BugFix nicht ausführbar.
>line: 73
> -Djava.ext.dirs="%AXIS2_HOME%\lib\"
>  
> \" should be \\"
>  
> i.e.
> line: 73
> %_RUNJAVA% %JAVA_OPTS% -Djava.ext.dirs="%AXIS2_HOME%\lib\\"
> -Daxis2.repo="%AXIS2_HOME%\repository"
> -Daxis2.xml="%AXIS2_HOME%\conf\axis2.xml" %*
Im build Ordner können Sie nun folgendes Kommando ausführen:
c:\axis2-1.4.1\bin\axis2.bat -jar Axis2UserGuideService-test-client.jar
Beachten Sie bitte, das dieser Aufruf nicht funktioniert wenn sich ihre Axis installation in einem Pfad befindet, der Leerzeichen enthält.

WSDL

Eine WSDL Datei definiert abstrakte und konkrete Haupttypen. Die abstrakten Haupttypen lassen WSDL ähnlich wie die IDL von CORBA erscheinen. Eine Besonderheit der WSDL sind die konkreten Haupttypen, die technologische Bindungen einführen.

Konkret: Abstrakt:

Folgende Bestanddteile sind keine Hauptelemente: Verwendung. Ein Benutzer möchte eine Kommunikation über REST RPC erhalten. Er möchte also Methoden auf einem Server aufrufen. Er könnte CORBA verwenden entscheidet sich aber für WebServices. Er schreibt eine WSDL Datei. Aus der Datei kann er den Client und den Server Stub erzeugen. Er implementiert die Stubs und hat seinen RPC.


zum Seitenanfang
zur Hauptseite

Letzte Änderung: 22.03.2009