2016-12-19 1 views
0

Я хотел бы иметь следующий код:Джерси - Multiple «без запроса, связанные с» параметры в методе POST подписи

@POST 
@Path("path") 
@Consumes(MediaType.TEXT_PLAIN) 
@Produces(MediaType.TEXT_PLAIN) 
public String doSomething(String body, CustomObject o) { 
    return o.getText(); 
} 

Проще говоря, метод POST, который принимает строку запроса тело (отображается на первый аргумент) и отвечает строковым ответом на основе параметра CustomObject в параметрах. Значение настраиваемого объекта предоставляется через ValueFactoryProvider - в основном значение заполняется фильтром.

Однако, я не могу назвать ресурс - я получаю:

java.lang.IllegalStateException: The resource configuration 
is not modifiable in this context. 

Можете ли вы мне точку в правильном направлении? Спасибо.

Примечание: Этот тип кода в настоящее время используется в нашей реализации Spring (Spring smartly maps all), в настоящее время мы работаем над версией Java EE, и мы хотели бы иметь аналогичный API.

+1

Итак, вы пытаетесь извлечь это значение, которое заполнено внутри фильтра, в вашем ValueFactoryProvider? –

+0

... да, и вы повсюду! :) Позвольте мне быстро сказать вам, над чем я работаю. Я работаю над PowerAuth 2.0 - безопасностью банковского класса с открытым исходным кодом для мобильного банкинга. Чтобы упростить интеграцию, я предоставляю библиотеки интеграции. У нас уже есть один для Spring, теперь я строю один для простой Java EE. Цель состоит в том, чтобы иметь библиотеку, которая позволяет разработчику просто комментировать существующие ресурсы REST и добавлять настраиваемый параметр с предварительно заполненными данными аутентификации ... –

+0

Если вы хотите сделать его переносным, то вы не хотите использовать ValueFactoryProvider. Это особый Джерси. Теперь, когда я думаю об этом, я не думаю, что существует стандартный способ JAX-RS для обработки этого варианта использования. С Джерсиком я точно знаю, как вы справитесь с этим, но я не уверен, хотите ли вы решения, характерные для Джерси. Что делать, если кто-то хочет использовать Wildfly, который использует RESTEasy в качестве реализации JAX-RS. –

ответ

0

Отсюда: https://stackoverflow.com/a/22263604/912829

Одной из возможных причин является то, что у вас есть два или более применимые отображения для этого URL вызова.

Например:

@Path ("/ {MyParam}")

И где-то еще:

@Path ("/ {differentParam}")

Теперь Джерси есть никоим образом не сказать, какой метод на самом деле должен быть вызван и дает эту ошибку.

+0

Нет, это не тот случай. Все работает, если я удаляю параметр «CustomObject» и возвращаю статическую строку. Проблема связана со вторым параметром. –

Смежные вопросы