mikos писал(а):
Феанор писал(а):
mikos писал(а):
Если есть примеры работы с REST - был бы благодарен!
а что именно нужно? чтобы к серверу снаружи по хттп можно было обращаться хитро, типа api какогото для другого приложения?
ага
Ну тогда jersey использовать.
http://jersey.java.net/Скачиваем оттуда нужные библиотеки, кладем их в webroot/WEB-INF/lib
Свои классы пишем, компилируем и кладем их в webroot/WEB-INF/classes
Прописываем в webroot/WEB-INF/web.xml
Код:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>тут названия кастомных классов, которые подгрузить надо</param-value>
</init-param>
<load-on-startup>8</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
Ну а дальше - все возможности явы, апи биллинга для формирования данных. У меня используется встроенная реализация сериализации ответов в JSON. Т.е. описываешь свои классы, метод их возвращает в json'e.
Код:
@Path("/crm")
@Produces("application/json; charset=UTF-8")
public class CRM {
public static final int HD=8;
Setup setup;
public CRM() {
this.setup=Setup.getSetup();
}
@GET
public ArrayList<CRMProblem> getProblems(@Context HttpServletRequest req,
@DefaultValue("-1") @QueryParam("departmentResponsibleId") int departmentResponsibleId,
@DefaultValue("-1") @QueryParam("urgency") int urgency,
@DefaultValue("-1") @QueryParam("status") int status,
@DefaultValue("") @QueryParam("type") String type,
@DefaultValue("-1") @QueryParam("dateType") int dateType,
@DefaultValue("2030-01-01") @QueryParam("date2") String date2,
@DefaultValue("2000-01-01") @QueryParam("date1") String date1,
@DefaultValue("") @QueryParam("text") String text
) throws SQLException,itax.webclient.exceptions.NotFoundException {
java.sql.Connection con=setup.getDBConnectionFromPool();
try{
....куча логики по дерагнию проблем, прикрючиванию к ним информации по договорам и тд...
}
finally { con.close(); }
}
и получается типа такого ответа:
Код:
{"content":[
{
"id":14,
"dateCreated":"21.11.2011 12:05:25",
"userCreated":"Главный администратор",
"dateModified":"21.11.2011 16:20:17"
....другие поля....
},
{другие значения}
]}
Ну можно еще манипулировать кодами ответов, 200, 404, 403 возвращать, мне это не нужно было, поотому что не совсем рестфул сервис был, но это все есть в библиотеке.