Почему методы REST-ресурсов не могут иметь модификатор final при использовании JAX-RS? - PullRequest
0 голосов
/ 19 января 2012

Мы используем CXF 2.4.2 для создания интерфейса RESTful. У меня есть класс ресурсов bean, который определяется следующим образом:

@Path("/mypath")
public class MyResource {

    @GET
    @Path("/myget")
    public final Response myGet() { ... }

Кто-нибудь знает, почему метод не может быть окончательным для доступа к ресурсу?

1 Ответ

0 голосов
/ 10 апреля 2012

Иногда JAX-RS реализован таким образом, что вместо исходного класса (который мы создаем) JAX-RS использует прокси-класс, который наследуется от нашего класса. Поскольку финальный метод не может быть переопределен, использование финальных методов запрещено.

Использование прокси-сервера позволяет добавлять в среду JAX-RS различные перехватчики, провайдеров и т. Д. Очевидно, что те же функциональные возможности могут быть получены без использования прокси, поэтому другие провайдеры могут разрешить использование окончательных методов.

В спецификации ничего не говорится о конечных методах.

Примечание: очень часто использование финального метода - плохая идея. Иногда, даже если мы думаем, что данный метод не должен быть переопределен, может показаться, что это необходимо. Даже создатели Java сделали несколько таких ошибок. Очевидно, есть классы, методы которых не следует переопределять (String), но их не так много.

...