null

JSON сервисы в Liferay Portal

Достаточно часто при разработке mvc-портлетов появляется необходимоть в асинхронном обновлении тех или иных компонентов. Обычной реализацией данного функционала является AJAX'овый запрос на сервер в виде вызова liferay action. Подробнее об этом можно прочитать в данной статье. Альтернативой являются такие же ajax'овые запросы, но выполненые в виде сервисов liferay. Принципы построения сервисов описаны в предыдущей статье, здесь лишь рассматриваются особенности получения данных в формате json простым get'овым запросом. 

1. Как и в SOAP необходимо объявить разрешенные IP адреса. Кроме того можно ограничить типы обрабатываемых HTTP запросов. Для этого отредактируем portal-ext.properties

jsonws.web.service.public.methods=*
json.servlet.hosts.allowed=127.0.0.1, SERVER_IP
jsonws.servlet.hosts.allowed=127.0.0.1,SERVER_IP

2. Изменим класс TestEntityServiceImpl.

@JSONWebService("test-service")
public class TestEntityServiceImpl extends TestEntityServiceBaseImpl {
	public String add(int a, int b) {
		return String.valueOf(a + b);
	}
}

3. Пересобираем сервисы

ant build-service

3. Проверим работоспособность. 

http://localhost:8080/TestServiceProject-portlet/api/secure/jsonws/test-service/add?a=1&b=1

4. Пример использования

$.get("http://localhost:8080/TestServiceProject-portlet/api/secure/jsonws/test-service/add", 
	{
		a : 1, 
		b : 1
	}, 
	function(response) { alert(response); });

 

Вперед