Мне нужно расширить существующий веб-сервис Liferay (созданный с помощью Service Builder) для обработки дополнительного необязательного параметра.Стройте веб-службу Liferay с необязательным параметром
С Service Builder, вы должны указать каждые параметры внутри подписи метода:
public String getList(String param1){ .. }
Это создает get-list
веб-службы принимающую параметр с именем param1
. Вы должны указывать все параметры при совершении вызова, иначе вызов завершится с ошибкой. Если вам нужны дополнительные параметры, просто передайте пустое значение и обработайте отсутствующий параметр внутри кода.
Моя проблема в обратной совместимости: этот веб-сервис уже используется мобильным приложением, и я не могу изменить вызов, сделанный приложением. Дополнительный параметр должен обрабатываться без изменения сигнатуры метода.
Взглянув на BaseServiceImpl, я пытался получить параметр таким образом:
HttpServletRequest request = com.liferay.util.axis.ServletUtil.getRequest();
String value = ParamUtil.getString(request, "param-name");
Но бросает NoClassDefException
относительно com.liferay.util.axis.ServletUtil
.
Есть ли способ на самом деле сделать это?
Это решило мою точную проблему, но мне интересно: что, если мне нужно больше параметров, и они должны быть все OPTIONALS ? – dipanda
Это общий подход к переходу и расширению методов. В зависимости от вашего требования вы можете добавить переопределенные методы или можете обновлять параметры, если метод не вызывается из многочисленных файлов. –