RESTful Web Service mit Apache Wink in WebLogic Portal

von Manuel Breitfeld

Mittlerweile sind für Java einige REST-Frameworks vorhanden zu den bekanntesten zählen sicherlich Jersey [1], Restlet [2], REST in Spring 3 [3] und Apache Wink [4]. All jene Frameworks implementieren die Java API für RESTful Web Services, kurz JAX-RS, welche unter anderem durch Annotation eine einfache Handhabung von Parametern, Pfaden und HTTP-Methoden ermöglicht.

Bei der Entwicklung für WebLogic Portal 10.3.2 ergibt sich das Problem, dass die verwendete Spring-Version REST noch nicht unterstützt. Auch die Frameworks Jersey und Restlet können aufgrund von Inkompatibilitäten mit WebLogic eigenen Bibliotheken nicht ohne weiteres in einem Portal-War eingebunden werden.

Apache Wink stellt als leichtgewichtiges (und darüber hinaus sehr performantes Framework [5]) eine ideale Möglichkeit dar, um innerhalb eines WebLogic Portals REST Web Services zu implementieren. Durch die einfache Integration in Spring kann auch innerhalb des eigens implementierten RESTful Wen Service auf die Vorzüge von Autowiring und ähnlichem zurückgegriffen werden.

Konfiguration

Die nötigen Konfigurationen befinden sich in der web.xml, in welcher der Spring-Context und das Servlet definiert werden.

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:META-INF/server/wink-core-context.xml
    /WEB-INF/application-context.xml</param-value>
</context-param>
<servlet>
    <servlet-name>restServlet</servlet-name>
    <servlet-class>org.apache.wink.server.internal.servlet.RestServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>restServlet</servlet-name>
    <url-pattern>/restapi/*</url-pattern>
</servlet-mapping>

In der Spring-Konfiguration (hier: application-context.xml) muss nur noch die Bean, die die Implementierung des REST Services darstellt, angegeben werden.

<bean id="resource.exensioRestService" class="servlet.rest.ExensioRestService"></bean>

<bean class="org.apache.wink.spring.Registrar">
    <property name="classes">
        <set value-type="java.lang.Class"></set>
    </property>
    <property name="instances">
        <set>
            <ref local="resource.exensioRestService">
        </ref></set>
    </property>

</bean>

Die Service-Klasse könnte wie folgt aussehen:

@Path("exensioService")
@Component
public class ExensioRestService {
    @Autowired
    private exensioTestServiceBusiness exensioTestService;
 
    @GET
    @Produces("text/plain")
    public String getStartingInfo() {
        return "This is an example output if no parameter and no extra path are given. "
    }

    @GET
    @Produces("text/plain")
    @Path("/name/{id}")
    public String getName(@PathParam("id") Long id) {
     return exensioTestService.getNameForId(id);
    }
}

Die Aufrufe dieses Services lauten:
http://host:port/exensioWar/restapi/exensioService/
http://host:port/exensioWar/restapi/exensioService/name/12

Fazit

Apache Wink ist ein einfach zu verwendendes REST-Framework mit JAX-RS und Spring-Unterstützung, welches sich problemlos in Projekten mit WebLogic Server und WebLogic Portal integrieren lässt.

Zurück

© 2006-2024 exensio GmbH
Einstellungen gespeichert

Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close