Motivation
Ich befasse mich derzeit mit OData und JSON. Die meisten Beispiele, die man hierzu im Internet findet, sind Microsoft-lastig. Ich will versuchen mit Tomcat und AXIS2 einen JSON Server aufzubauen. AXIS2 soll nicht standalone, sondern auf einem Tomcat Server laufen. Die einzelnen Schritte, die dazu nötig sind, will ich in meinem Blog, in einer mehrteiligen Reihe beschreiben, wobei ich noch nicht weiß, ob das alles so funktioniert, wie ich mir das gedacht habe.
In den ersten Teilen will ich beschreiben, wie die Voraussetzungen erfüllt werden:
- Installation Tomcat
- Installation Axis2 auf Tomcat
In den darauf folgenden Teilen geht es darum, JSON als Server auf Axis2 bereitzustellen und von einem Cient zu konsumieren.
Tomcat – Quick Start…
Apache Tomcat ist Servlet Container mit JSP Compiler und einem (eingeschränkten) HTTP Server. Er eignet sich hervorragend, um JSP- und Servlet-Anwendungen zu schreiben und zu testen, aber auch, um beispielsweise AXIS2-Webservices anzubieten. Aufgrund seiner weiten Verbreitung ist der Tomcat Server sehr stabil, zudem ist er schlank und schnell und, meiner Meinung nach, falls man keine EJBs oder Portale etc. entwickeln will, einem „schweren“ Applikationsserver vorzuziehen.
Alles, was ich im Folgenden beschreibe, wurde auf Ubuntu Linux 11.10 ausgeführt.
Installation:
1) Download der Binary Distribution (tar.gz) von hier
2) Entpacken der Distribution
3) Starten:
juergen@vostrou64:/opt/<strong>apache-tomcat-6.0.35/bin$ sudo ./startup.sh</strong> Using CATALINA_BASE: /opt/apache-tomcat-6.0.35 Using CATALINA_HOME: /opt/apache-tomcat-6.0.35 Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.35/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/apache-tomcat-6.0.35/bin/bootstrap.jar
4) Testen:
Mit der URL: http://localhost:8080/ können Sie die Installation überprüfen.
Konfiguration:
Die generelle Konfiguration wird in der Datei conf/server.xml festgelegt. Änderungen werden erst nach einem Neustart wirksam.
juergen@vostrou64:/opt/apach.../conf$ sudo vi server.xml
Im Abschnitt „Connector“ wird u.a. festgelegt, auf welchem Port der Server läuft:
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector <strong>port="8080"</strong> protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
<strong>port="8080"</strong> protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
Im Abschnitt „GlobalNamingRessources/UserDatabase“ wird festgelegt, wo die Benutzer konfiguriert werden:
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="<strong>UserDatabase</strong>" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="<strong>conf/tomcat-users.xml</strong>" />
</GlobalNamingResources>
Diese Datei sieht defaultmäßig wiefolgt aus:
<!-- <role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> -->
Es gibt Rollen und User mit Username, Password und Rolle. Im Standard sind diese Rollen und Benutzer auskommentiert („<!–“ und „–>“). Die Kommentierung muss entfernt werden, falls man Änderungen vornehmen will!
Der Manager-User ist quasi der Administrator, seit Tomcat 6.0.30 wurde die Managerrolle in vier Teilrollen aufgeteilt:
- manager-gui – allows access to the HTML GUI and the status pages
- manager-script – allows access to the text interface and the status pages
- manager-jmx – allows access to the JMX proxy and the status pages
- manager-status – allows access to the status pages only
Um nun die Rolle manager-gui dem User tomcat mit dem Passwort s3cret zuzuweisen, müssen folgende Zeilen zu conf/tomcat-users.xml hinzugefügt werden:
<role rolename="manager-gui"/> <user username="tomcat" password="s3cret" roles="manager-gui"/>
Zum Aktivieren ist ein Neustart des Tomcat Servers notwendig (shutdown.sh und dann startup.sh)! Anschließend auf http://localhost:8080/ den Link „Tomcat Manager“ (http://localhost:8080/manager/html) aufrufen und den oben konfigurierten User eingeben.
Deployment:
Auf Tomcat werden sog. Web-Applikation deployed. Seit der Servlet API Specification, Version 2 werden hierfür sog. Web Application Archives (WAR) Dateien verwendet. Die WAR Dateien haben eine festgelegte Verzeichnisstruktur und dienen als „Transportformat“ für das Deployment, also dem Verteilen bzw. Installieren einer Web-Applikation auf einem Server.
Die Verzeichnisstruktur ist wie folgt:
| Verzeichnis | Inhalt |
| / | Wurzelverzeichnis, enthält html, jsp, js etc. Dateien |
| /WEB-INF/web.xml | der sog. Web Application Deployment Descriptor, welcher die Servlets etc. der Web-Applikation beschreibt |
| /WEB-INF/classes | Klassendateien (class), aber keine JAR Dateien. Reflektiert die Struktur bei Packages in Form von Unterverzeichnissen |
| /WEB-INF/lib | JAR Dateien |
Weitere Informationen sind hier zu finden.
Um WAR-Dateien auf Tomcat zu deployen, kann man sie direkt in das „webapps“ Verzeichnis der Tomcat-Installation kopieren, oder man verwendet die Manager-GUI. Mit der Manager-GUI kann man die WAR-Datei lokal auswählen und deployen:
Falls die deployte Applikation anschließend nicht in der Liste erscheint, sollte man sich die Tomcat Logdateien anschauen.
Eigene Applikationen erstellen
Wie man eigene Applikationen für Tomcat erstellt, wird hier erklärt.


