Я столкнулся с довольно интересной ошибкой изложения:
"Допускается не более одного параметра сущности JAX-RS (все остальные параметры должны быть аннотированы одной из аннотаций параметров ресурса JAX-RS). "
Я использую enunciate для создания API SOAP и REST, поддерживающих XML и JSON.Enunciate настроен на использование всех классов service. * И service.impl. *.Каждый сервис содержит весь Javadoc для документации документации, а также аннотацию [@GET @POST @PUT @DELETE] и @Path.Каждая служба impl содержит аннотацию класса @Path.
Пример интерфейса:
public interface myService {
@GET
@Path("/something")
Object doGetAll();
@GET
@Path("/something/{id}"
Object doGetOne(@PathParam("id") Integer id);
@PUT
@Path("/something")
Object doCreate(/*params*/);
@POST
@Path("/something/{id}")
Object doUpdate(@PathParam("id") Integer id, /*params*/);
@DELETE
@Path("/something/{id}")
Object doDelete(@PathParam("id") Integer id);
}
Пример реализации:
@Path("/base")
public class myServiceImpl implements myService {
Object doGetAll() {/*stuff*/}
Object doGetOne(Integer id) {/*stuff*/}
Object doCreate(/*params*/) {/*stuff*/}
Object doUpdate(Integer id, /*params*/) {/*stuff*/}
Object doDelete(Integer id) {/*stuff*/}
}
Когда я закомментирую "@POST" и«@PUT» аннотации в моем сервисе enunciate будут работать нормально.Тем не менее, комментирование обратно не приведет к сообщению выше.Суть в том, что у меня есть сервисы, которые охватывают 2-8 различных моделей (пример: мой addressService включает в себя 3 объекта: адрес, штат и страну), поэтому я указал контексты пути (используя адрес) следующим образом:
при условии:
@Path("/address")
public class myAddressServiceImpl implements myAddressService {}
о методах:
@GET
@Path("/{id}")
findAddressById();
@GET
@Path("/states/{id}")
findStateById();
@GET
@Path("/countries/{id}")
findCountryById();
Если бы я мог предоставить больше информации, я был бы рад.Это была довольно неприятная проблема, потому что я не уверен, неправильно ли настроил enunciate (сомнительно, это базовая конфигурация) или я растягиваю то, что может сделать JAX-RS.Я потратил много времени на чтение учебников, поиск в Google и просмотр Javadoc (для enunciate и JAX-RS), но мне не повезло.
Кто-нибудь еще видел эту проблему?Любые мысли о том, что я мог бы сделать, чтобы это исправить?У меня такое ощущение, что это будет одно из тех исправлений "без духа" ... просто не могу на это обратить внимание.
Заранее спасибо за помощь.