O'Reilly logo

Die OSGi Service Platform: Eine Einführung mit Eclipse Equinox by Matthias Lübken, Bernd Kolb, Nils Hartmann, Gerd Wütherich

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

421
24 Webanwendungen mit
Eclipse Equinox
Motivation
In Kapitel 19 haben wir Ihnen mit dem Http Service einen leichtge-
wichtigen Webserver vorgestellt, der die Entwicklung von einfachen
Webanwendungen innerhalb der OSGi Service Platform ermöglicht.
Eclipse Equinox stellt aufbauend auf die Http-Service-Spezifika-
tion verschiedene Erweiterungen zur Verfügung, die die Entwicklung
von Webanwendungen weiter vereinfachen bzw. zusätzliche Funktio-
nalität bereitstellen:
Durch die Einbindung der Extension Registry können Servlets und
Ressourcen deklarativ als Extensions beschrieben werden.
Die Einbindung der Jasper JSP Engine ermöglicht die Verwendung
von JavaServer Pages.
Über ein Http Service Servlet können beliebige Servlet Container
innerhalb der OSGi Service Platform konform zur Http-Service-
Spezifikation verwendet werden.
Die sog. Servlet Bridge ermöglicht die Einbettung von Eclipse
Equinox in beliebige Webanwendungen.
In diesem Kapitel stellen wir Ihnen die von Eclipse Equinox bereitge-
stellten Erweiterungen zur Entwicklung von Webanwendungen im
Detail vor.
24.1 Tutorial: Eine Webanwendung mit JSPs und
Extensions
Überblick
Um Ihnen die webspezifischen Erweiterungen von Eclipse Equinox zu
demonstrieren, implementieren wir ein neues Bundle
org.osgibook.
helloworld.equinoxweb
, das eine Modifikation der »Hello World«-
Webapplikation aus Kapitel 19 darstellt. Folgende Änderungen sollen
vorgenommen werden:
24 Webanwendungen mit Eclipse Equinox422
Realisierung der »Hello World«-Seite durch eine JSP: Die »Hello
World«-Seite, die wir im Tutorial zu Kapitel 19 durch ein Servlet
realisiert haben, soll durch eine JavaServer Page implementiert
werden.
Anmelden von JSP und Ressourcen über die Extension Registry:
Sowohl die JSP als auch die statischen Seiten sollen über die Exten-
sion Registry registriert werden.
Verwendung des Jetty-Webservers: Anstelle der Equinox-Imple-
mentierung des OSGi Http Service soll in diesem Tutorial der Jetty-
Webserver verwendet werden.
Da die Implementierung der dynamischen Webseite durch eine JSP und
die Anmeldung der JSP und der Ressourcen über die Extension Regis-
try erfolgt, ssen in diesem Tutorial keine Java-Klassen implemen-
tiert werden. Die einzige Package-Abhängigkeit des Bundles
org.osgi-
book.helloworld.equinoxweb
ist die Abhängigkeit zum Package org.
eclipse.equinox.jsp.jasper.registry
, das aus der Datei plugin.xml über
eine Extension referenziert wird (vgl. Abb. 24–1).
Abb. 24–1
Überblick über die
beteiligten Bundles
verwendet
Klassen aus
MANIFEST.MF
META-INF
jsp
resources
html
plugin.xml
Eclipse Equinox /
org.eclipse.equinox.jsp.jasper.registry
MAN
IFE
ST.
MF
MET
A-I
NF
j
Bundle-SymbolicName:
org.osgibook
.helloworld.equinoxweb
42324.1 Tutorial: Eine Webanwendung mit JSPs und Extensions
Die Plug-in-Projekte
In Abb. 24–2 ist das fertige Plug-in-Projekt aus diesem Tutorial darge-
stellt.
Schritt 1: Anlegen des Plug-in-Projektes org.osgibook.helloworld.jsp
Legen Sie zunächst ein neues Plug-in-Projekt mit dem Namen
o
rg.osgibook.helloworld.equinoxweb an. Da wir in diesem Projekt
keine Java-Klassen entwickeln, können Sie auf der Startseite des Plug-
in Project Wizards die Option Create a Java project deaktivieren.
Schritt 2: Anmelden der HTML- und Ressource-Dateien
Kopieren Sie anschließend die Ordner html und resources aus dem
Plug-in-Projekt
org.osgibook.helloworld.servlet, das Sie im Tutorial
zu Kapitel 19 angelegt haben.
Die enthaltenen HTML- und Ressource-Dateien werden wir in
diesem Tutorial nicht programmatisch über den Http Service anmel-
den. Stattdessen nutzen wir dazu die Extension Registry und definieren
die HTML- und Ressource-Dateien als Extensions für den Extension
Point
org.eclipse.equinox.http.registry.resources. Die resultierende
Datei
plugin.xml ist in Listing 24–1 dargestellt.
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension
point="org.eclipse.equinox.http.registry.resources">
<resource
alias="/images"
base-name="/resources">
</resource>
Abb. 24–2
Die fertigen
Plug-in-Projekte
Listing 24–1
Die Datei plugin.xml
24 Webanwendungen mit Eclipse Equinox424
<resource
alias="/"
base-name="/html">
</resource>
</extension>
</plugin>
Schritt 3: Implementierung der hello.jsp
Die Funktionalität, die im Tutorial zu Kapitel 19 durch ein Servlet rea-
lisiert wurde, implementieren wir in diesem Tutorial durch eine Java-
Server Page. Innerhalb der JSP wird der Request-Parameter
name ausge-
lesen. Ist dieser Parameter nicht gesetzt, dann wird der Aufruf auf die
Fehlerseite
fehler.html weitergeleitet. Anderenfalls wird eine Antwort-
seite generiert, auf der der Anwender namentlich begrüßt wird. Legen
Sie die JSP in der Datei
jsp/hello.jsp an (vgl. Listing 24–2).
<% String name = request.getParameter("name"); %>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<% if (name == null || name.length() < 1) { %>
<jsp:forward page="fehler.html" />
<% } else { %>
<h1>Hallo <%= name %>!</h1>
<% } %>
</body>
</html>
Um die JSP am Webserver anzumelden, nutzen wir die JSP Factory, die
von Eclipse Equinox über das Bundle
org.eclipse.equinox.jsp.jas-
per.registry
bereitgestellt wird (vgl. Listing 24–3).
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
[...]
<extension point="org.eclipse.equinox.http.registry.servlets">
<servlet alias="/helloworld"
class="org.eclipse.equinox.jsp.jasper.registry.
JSPFactory:/jsp/hello.jsp"/>
</extension>
</plugin>
Listing 24–2
Die Datei hello.jsp
Listing 24–3
Die Datei plugin.xml
42524.1 Tutorial: Eine Webanwendung mit JSPs und Extensions
Damit aus dem Bundle auf die JSP Factory zugegriffen werden kann,
müssen Sie das entsprechende Package über den Import-Package-
Manifest Header importieren:
Import-Package:
org.eclipse.equinox.jsp.jasper.registry;version="1.0.0"
Schritt 4: Ausführen des Beispiels
Legen Sie zur Ausführung des Beispiels eine neue Launch-Konfigura-
tion »Hello World Equinox Web« an. Mit dieser Launch-Konfigura-
tion starten wir anstelle des Equinox Http Service den Jetty Webserver,
der ebenfalls in der Eclipse Equinox Distribution enthalten ist. Wählen
Sie dazu neben dem Projekt im Workspace auch die folgenden Bundles
aus:
javax.servlet
javax.servlet.jsp
org.apache.commons.el
org.apache.commons.logging
org.apache.jasper
org.eclipse.equinox.common
org.eclipse.equinox.http.jetty
org.eclipse.equinox.http.registry
org.eclipse.equinox.http.servlet
org.eclipse.equinox.jsp.jasper
org.eclipse.equinox.jsp.jasper.registry
org.eclipse.equinox.registry
org.eclipse.osgi
org.eclipse.osgi.services
org.mortbay.jetty
Wenn Sie die Launch-Konfiguration ausführen, sehen Sie auf der Kon-
sole die Logging-Ausgaben des Jetty-Webservers:
osgi> 27.04.2008 11:37:38 org.mortbay.http.HttpServer doStart
INFO: Version Jetty/5.1.x
27.04.2008 11:37:38 org.mortbay.util.Container start
INFO: Started org.mortbay.jetty.servlet.ServletHandler@340101
27.04.2008 11:37:38 org.mortbay.util.Container start
INFO: Started HttpContext[/,/]
27.04.2008 11:37:38 org.mortbay.http.SocketListener start
INFO: Started SocketListener on 0.0.0.0:1234
27.04.2008 11:37:38 org.mortbay.util.Container start
INFO: Started org.mortbay.http.HttpServer@da6bf4

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required