Jersey Spring Anwendung, laden von Funktionalitäten vor und nach der Ausführung der Controller Actio

Lit-Web

Grünschnabel
Hallo,

der Titel ging nicht auszuschreiben, von daher nochmal als ganzes.

Jersey Spring Anwendung, laden von Funktionalitäten vor und nach der Ausführung der Controller Action / Prozess Methode?

Ich habe eine Spring / Jersey Anwendung. Ich suche eine Möglichkeit wie ich Funktionalitäten z.B. über einen Event - Dispatcher vor der Ausführung sowie nach der Ausführung einer Action oder Prozess Methode ausführen kann?

Das heist, es wird ja ein Request geschickt, über die Annotations wird ja dann mitgeteilt welche Methode ausgeführt werden soll.

Beispiel ApplicationController
Java:
package de.decon.v5.core.controller;

import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("app")
public class ApplicationController {
   
    @Path("/logStateControl")
    @Produces(MediaType.APPLICATION_JSON)
    public String controlLoggedIn() {
        // irgendwelcher Code
       
        return null;
    }
}

DEr Controller wird ja durch das Spring-Jersey Servlet irgendwann einmal auf gerufen, dann die Annotations der Methode controlLoggedIn() ausgewertet / verarbeitet und dann wird letzlich die Methode ausgeführt. Und ich suche nun einen Weg Funktionalität rein bringen zu können nach dem Auswerten der Annotations, und vor der Ausführung der Methode bzw. nach dem ausführen der Methode.

Kann mir da irgendjemand hier einen Tipp geben wie ich das machen kann?

Oder wie ich vieleicht mit eigenen Annotations die Funktionalität im Servlet dann noch zusätzlich beeinflussen kann?

Oder ist das gar nicht möglich da irgendwie rein zu kommen?

Vielen Dank für eure Hilfe und Tipps, ich konnte über Google da nicht wirklich hilfreiches finden.

Gruß Lit-Web
 
Also davor sollte ja nicht unbedingt so schwer sein, ich sage nur Constructor. Und danach wäre über ein Runnable in einem Thread denkbar.

Aber was ich nicht verstehe, warum du unbedingt davor bzw. danach Funktionen aufrufen willst. Was ist dass denn für ein Workflow, der dieses Vorgehen nach sich zieht? Ich frage deshalb, weil es evtl. andere Lösungen für dein Problem gibt.
 
Ich kam ursprünglich aus der Programmierung mit dem Zend Framework und php. Da gab es Hooks bevor so eine Action Methode ausgeführt wurde. Die nannten sich preDispatch und postDispatch. Nach dem Beispiel wollte ich das umsetzen. Sollte es dafür dann bessere Lösungen geben, bin ich gern dafür offen.
 
Naja die Sache ist ja das ich einen Integration von Spring und Jersey nutze, über Maven gehandelt.

Das heißt das eigentliche MVC läuft über Jersey.

Da ist der Link dann doch nicht ganz so richtig oder irre ich da? Weil der bezieht ja auf spring mvc.
 
Guten Morgen.

Na klar gern doch.

HTML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>deconFm_Version5</groupId>
    <artifactId>decon_fm_version5</artifactId>
    <packaging>war</packaging>
    <version>0.0.1</version>
    <name>decon_fm_version5 Maven Webapp</name>
    <url>http://maven.apache.org</url>
   
    <properties>
        <junit.version>4.9</junit.version>
       
        <spring.version>3.2.0.RELEASE</spring.version>
       
        <hibernate.core>3.3.2.GA</hibernate.core>
        <hibernate.annotations>3.4.0.GA</hibernate.annotations>
        <javax.persistence>1.0</javax.persistence>
        <javassist.version>3.12.1.GA</javassist.version>
        <c3p0.version>0.9.1.2</c3p0.version>
        <postgresql.version>9.1-901.jdbc4</postgresql.version>
       
        <jersey.version>1.13</jersey.version>
       
        <jackson.version>1.9.13</jackson.version>
       
        <servlet.version>2.5</servlet.version>
       
        <org.slf4j.version>1.7.2</org.slf4j.version>
        <log4j.version>1.2.16</log4j.version>
       
        <commons.collections.version>3.2.1</commons.collections.version>
    </properties>
   
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
       
        <!-- Spring Komponenten -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
       
       
        <!-- Datenbank Komponenten -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.core}</version>
        </dependency>
       
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>${hibernate.annotations}</version>
        </dependency>
       
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>${javax.persistence}</version>
        </dependency>
       
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>${javassist.version}</version>
        </dependency>
       
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3p0.version}</version>
        </dependency>
       
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>${postgresql.version}</version>
        </dependency>
       
        <!-- Jersey Komponenten -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>${jersey.version}</version>
        </dependency>
       
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>${jersey.version}</version>
        </dependency>
       
        <!-- Jersey - Spring Integration -->
        <dependency>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-spring</artifactId>
            <version>1.13</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
       
        <!-- Jackson -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>
       
        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
        </dependency>
       
        <!-- Logging Komponenten -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>${commons.collections.version}</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
 
Zurück