forum.bitel.ru
http://forum.bitel.ru/

[7.0] CustomAPI, JSON RPC и авторизация в кастомном сервисе
http://forum.bitel.ru/viewtopic.php?f=19&t=12831
Страница 1 из 1

Автор:  Phricker [ 14 мар 2018, 17:41 ]
Заголовок сообщения:  [7.0] CustomAPI, JSON RPC и авторизация в кастомном сервисе

Доброго времени суток уважаемые разработчики.

Собственно наткнулся на то, что web-сервис можно дергать через JSON RPC

И тут стало интересно, не могу ли я таким же образом обратиться к своему веб-сервису, написанному в CustomAPI.

Оказалось, что не могу.
НО
Оказалось, что если переписать класс ru.bitel.bgbilling.kernel.container.ws.server.JsonWsHandler
И добавить в него поиск своего сервиса
Код:
Class<?> implementorClass;
if(moduleKey.service.equals("TestService")){
    implementorClass = findCustomApiEndpointClass(moduleKey);
}
else{
    implementorClass = this.findEndpointClass(moduleKey);
}
if (implementorClass == null) {
    throw new BGException("Не найден сервис: " + moduleKey.module + ":" + moduleKey.service);
}

Код:
private Class<?> findCustomApiEndpointClass(ModuleKey moduleKey) {
        try {
            return DynamicClassManager.getInstance().loadClass("api.ru.ellco.bgbilling.test.impl.TestServiceImpl");
        } catch (BGException e) {
            log.error(e.getMessage(), e);
            return null;
        }
    }



Оказалось, что всё прекрасно вызывается.
Изображение


И даже более того
Оказалось, что в таком случае пашет и встроенная авторизация ;)
Необходимо передавать юзера в строке
Код:
"user" :{ "user" : "login", "pswd" : "password" },

иначе выдает ошибку :)

Возможно вы посодействуете в том, чтобы некоторым людям (мне это пока не нужно, но всё же) - было удобнее.
Возможно появится какой нибудь /json/api/ по аналогии с поиском по какому-нибудь модулю или т.п.

Автор:  Phricker [ 14 мар 2018, 17:44 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Единственное НО - в таком случае веб сервис должен реализовывать интерфейс.
Но это не проблема, и кому это надо и кто хочет этим функционалом воспользоваться - могут написать и интерфейс :)

Автор:  Phricker [ 15 мар 2018, 22:24 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

up

Автор:  Phricker [ 18 мар 2018, 22:11 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Предпонедельничный АП.
Вдруг Димон решит в понедельник с утра поработать.

Автор:  Ildar [ 22 мар 2018, 13:13 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Это можно сделать уже сейчас с помощью параметра в конфиге dynservice.

Давайте приведу пример:

Допустим, что у вас уже есть customApi класс TestCustomServiceImpl, тогда мы создаем для него интерфейс TestCustomService и реализуем его в TestCustomServiceImpl.

Тогда класс будет таким:

Код:
package api.ru.bitel.bgbilling.impl;

import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;

@WebService(targetNamespace="testService")
public class TestCustomServiceImpl extends AbstractService implements TestCustomService
{
   public List<Integer> testMethod()
   {
      List<Integer> list = new ArrayList<Integer>();
      list.add( 1 );
      list.add( 2 );
      list.add( 3 );
      return list;
   }
}


Интерфейс:

Код:
package api.ru.bitel.bgbilling.impl;

import java.util.List;
import javax.jws.WebService;

@WebService
public interface TestCustomService
{
   public List<Integer> testMethod();
}


После чего в конфиге пропишем dynservice для нашего сервиса, таким способом - dynservice:[url путь по желанию]=[путь до класса]

Например в приведенном примере можно так:
dynservice:test1.TestCustomService=api.ru.bitel.bgbilling.impl.TestCustomServiceImpl

Тогда обратиться можно будет так с локальной машины:
Код:
http://127.0.0.1:8081/bgbilling/executer/json/test1/TestCustomService


Ну и в теле json:
Код:
{
    "method": "testMethod",
    "user": {
        "user": "user",
        "pswd": "XXXXX"
    },
    "params": {}
}

Автор:  Phricker [ 23 мар 2018, 00:00 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Очешуеть.

Автор:  Arcad77 [ 23 мар 2018, 22:02 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Наконец-то свои сервисы можно авторизировать

Автор:  Phricker [ 23 мар 2018, 22:42 ]
Заголовок сообщения:  Re: [7.0] CustomAPI, JSON RPC и авторизация в кастомном серв

Arcad77 писал(а):
Наконец-то свои сервисы можно авторизировать

Так то и раньше можно было.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/