Вызов метода до или после каждого запроса @POST или @DELETE в JAX-RS

1

Есть ли какой-либо метод или аннотация в JAX-RS, который позволяет мне вызвать метод до или после выполнения метода запроса соответствия. Предположим, что у меня есть следующий класс обслуживания:

public class MyService {

    ...

    @POST
    @Path("{id : \\d+}")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response updateServiceObject(@PathParam("id") long id, InputStream is) {
        try {
            // Fetch the service object ...
            ServiceObject updatedServiceObj = readServiceObject(is);

            // ... and try to update it.
            updated = getServiceObjectDao().update(updatedServiceObj);

            if (updated == 0) {
                throw new WebApplicationException(Response.Status.NOT_FOUND);
            }

            return Response.ok().build();
        } catch (Exception e) {
            throw new WebApplicationException(Response.Status.BAD_REQUEST);
        }
    }

    @DELETE
    @Path("{id : \\d+}")
    public Response deleteServiceObject(@PathParam("id") long id) {
        try {
            getServiceObjectDao().deleteById(id);
        } catch (Exception e) {
            throw new WebApplicationException(Response.Status.BAD_REQUEST);
        }

        return Response.ok().build();
    }
}

Я хотел бы добавить метод logEvent(), который регистрирует, какой метод был вызван, и какие параметры (только значения @PathParam) были предоставлены. Таким образом, его нужно вызывать до или после каждого вызова.

  • 0
    Вы можете иметь фильтры или перехватчики. Также некоторые фреймворки имеют встроенную поддержку регистрации. Какая структура у тебя?
  • 0
    Я использую Apache CXF.
Показать ещё 1 комментарий
Теги:
rest
web-services
jax-rs

4 ответа

0

На этой странице https://cxf.apache.org/docs/jax-rs-filters.html объясняется, как реализовать перехватчики и фильтры для CXF с JAX-RS.

0

Добавьте это в свой xx xx.

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:cxf="http://cxf.apache.org/core"
      xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <cxf:bus>
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus> 
</beans>

Ссылка: http://cxf.apache.org/docs/configuration.html

0

Это похоже на идеальную подгонку для аспектов или фильтров. Фильтры - это аспекты HTTP.

-1

использовать Apect Oriented Programming (AOP)

  • 0
    что такое АОП? Можете ли вы объяснить или можете дать ссылку, связанную с этим

Ещё вопросы

Сообщество Overcoder
Наверх
Меню