Я пишу веб-службу RESTful. технологии, которые я использую:Как включить/отключить методы HTTP для веб-службы RESTful?
- Eclipse, Е.Е. Кеплер IDE
- GlassFish 3 (на основе Java 6)
- Джерси
- JDK v7
Когда я аннотировать метод Java с, например, аннотация @DELETE
Я получаю следующую ошибку HTTP (вызывается через URI):
HTTP Status 405 - Method Not Allowed
Я хотел бы знать , как включить/отключить (таким образом, чтобы включить/отключить вышеуказанную ошибку HTTP) эти методы (PUT, HEAD и т.д.) и на каком уровне это может быть сделано (GlassFish, Web.xml и т. Д.). Кроме того, вы можете вызывать все эти методы ресурсов (аннотированные с типом метода HTTP) из URI веб-браузера, в пределах <form>
или автономного клиентского приложения (не-браузер)?
Например, независимо от того, присутствует или нет следующей конфигурации линии на дескрипторе развертывания, это не имеет никакого значения:
<security-constraint>
<web-resource-collection>
<web-resource-name>RESTfulServiceDrill</web-resource-name>
<url-pattern>/drill/rest/resource/*</url-pattern>
<http-method>DELETE</http-method>
</web-resource-collection>
Конечно, один может отключить конкретный метод ресурсов пути бросать исключение от него (и сопоставить его с ошибкой HTTP) как указание на него. Это означает, что реализация не доступна, например.
До сих пор работали только методы @GET и @POST (по <form>
), другие аннотированные методы, такие как @POST (через URI), @PUT, @DELETE, @OPTIONS, возвращают указанную выше HTTP-ошибку , И здесь мой вопрос нуждается в решениях. Почему упомянутые методы ресурсов вызывают ошибку HTTP, когда первые два нет?
Пример метода ресурса:
@DELETE
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
@Path("/getDelete/{value}/{cat}")
public String getDelete(@PathParam("value") String value, @PathParam("cat") String cat){
return value+" : "+cat;
}
Вызов URL:
<a href= "/RESTfulServiceDrill/rest/v6/exception/getDelete/Animal/cat">getDelete</a>
Дескриптор развертывания пуст, для указанных выше строк кода XML, за исключением. До сих пор я заставил приложение работать, используя аннотации, не Web.xml (содержит только некоторые значения по умолчанию, например, файлы index.jsp).
Есть идеи?
Я не совсем понимаю ваш вопрос. У вас есть проект в основном работает, т. Е. Работает ли какой-либо метод ваших классов REST? Если нет проблемы с вашей настройкой, если да, вы должны взять этот метод в качестве примера. Для получения дополнительной информации, пожалуйста, обновите вопрос с помощью вашего полного кода 'web.xml' и примера. – unwichtich
Для меня ваш вопрос в целом не имеет большого смысла, поэтому я думаю, что причина для всех пустых голосов. –
Не могли бы вы привести примеры того, что вы имеете в виду? Ваш вопрос довольно неясен. Вы указываете метод REST для соответствующего пути в Java, используя Джерси. Кроме того, вы определяете GET для этого пути, прежде чем определить DELETE? – Signus