2013-06-21 3 views
0

Я пытаюсь использовать RestEasy и Jax-Rs для направления запросов на соответствующие ресурсы в приложении Java. Однако у меня возникают проблемы с использованием аннотации @ApplicationPath. Я хочу передать в шаблон и иметь его маршрут ничего соответствия этому шаблону в нужное местоRestEasy @ApplicationPath с использованием шаблона

Я попытался это:

@ApplicationPath("*/rest/v1/")... 

и я мог бы маршрут пути, такие как:

/MyApplication/rest/v1/ 

или

/AnotherApp/rest/v1/ 

к тому же заявлению.

Однако, RestEasy дает мне 404, что он не может соответствовать ресурсу, но если я жестко кодирую путь без */it, он отлично работает. Можно ли поместить такой шаблон в @ApplicationPath?

EDIT:

Вся цель это сделать корневой путь приложения настраиваемым и с его пропускают через фильтр, чтобы проверить конфигурацию. Но если есть способ настройки @ApplicationPath во время выполнения, это будет еще лучшее решение.

ответ

1

@ApplicationPath используется только для класса RestEasyActivator.

Для использования ресурсов @Path. Теперь, когда это очищено, прочитайте следующее:

Аннотации @Path не ограничиваются простыми выражениями пути. У вас также есть возможность вставлять регулярные выражения в значение @ Path. Например:

@Path("/resources) 
public class MyResource { 

    @GET 
    @Path("{var:.*}/stuff") 
    public String get() {...} 
} 

Следующая GETs маршрут к методу getResource():

GET /resources/stuff 
GET /resources/foo/stuff 
GET /resources/on/and/on/stuff 

Формат выражения является:

"{" variable-name [ ":" regular-expression ] "}" 

Часть регулярных выражений является необязательной. Когда выражение не предоставляется, по умолчанию используется сопоставление подстановочных знаков для одного конкретного сегмента.В регулярных выражений терминов, то выражение, по умолчанию в "([] *)"

Например:

@Path("/resources/{var}/stuff") 

будет соответствовать этим:

GET /resources/foo/stuff 
GET /resources/bar/stuff 

, но не соответствует:

GET /resources/a/bunch/of/stuff 

Ссылка: http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html_single/

+0

Спасибо, за ответ, но я понял, что много. Я просто пытаюсь создать глобальный путь приложения для ресурсов '@ Path'. Таким образом, у каждого @Path есть '@ ApplicationScoped'. Например, я хочу сделать следующее: '@ApplicationPath (" /.../ ")', а затем '@Path ("/stuff ")', так что URL с '/.../ stuff' достигнет ресурс, обозначенный '@Path ("/stuff ")' – user2009114

+0

Я закончил создание Web-фильтра, который поймал все запросы и оставил @ApplicationPath (/). В фильтре я выполнил различные проверки, а затем передал запрос с измененным uri, чтобы вынуть basePath. Я надеюсь, что это может быть полезно кому-то в будущем, поэтому, если необходимо изменить baseUrl во время выполнения, это, вероятно, самый простой способ сделать это. – user2009114