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

Создание контракта (и не только) одним http запросом
http://forum.bitel.ru/viewtopic.php?f=25&t=4660
Страница 1 из 1

Автор:  Nazim [ 15 окт 2010, 01:47 ]
Заголовок сообщения:  Создание контракта (и не только) одним http запросом

Привет! Недавно понадобилось сделать регистрацию через web для bgbilling 4.5. Решил с xslt шаблонами не возиться и попробовать через http интерфейс биллинга. В результате был сделан небольшой сервлет, обёртка вокруг beanshell скриптов. Логика очень простая.
Для создания контракта вызывается сервлет, параметры запроса перенаправляются в интерпретатор beanshell, который запускает скрипт.
Скрипт лезет на bgbilling/executor и создаёт контракт.
Решение может показаться громоздким, но это не так. Подобная схема позволяет добавлять функциональность без перекомпиляций, за счёт beanshell скриптов. Можно к примеру: менять пароли, приостанавливать контракт, добавлять приход и многое другое, вся стандрартная функциональность java клиента может быть повторена вышеуказаным способом (http post запросы которые шлёт регистрационный скрипт, выдирались из клиента с помощью снифера). Так что всё очень и очень просто, смотрим снифером что посылает клиент, пишем скрипт который делает то же самое и регистрируем скрипт в сервлете.

Вот пример файла 'nazir.properties' (должен находиться в BGBilling/data/) в котором происан скрипт регистрации контракта:
Код:
actionNewContract=/home/nazim/prj/bgbnazir/actionscripts/newcontract.bsh


Теперь сервлет на каждый запрос с параметром 'action' равным 'NewContract' будет вызывать скрипт newcontract.bsh.
Сам сервлет запускается из конфигурационного файла Tomcat web.xml.

Код:
    <servlet>
        <servlet-name>nazir</servlet-name>
        <servlet-class>com.butatech.bgbilling.nazir.servlet.NazirServlet</servlet-class>
        <load-on-startup>11</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>nazir</servlet-name>
        <url-pattern>/nazir</url-pattern>
    </servlet-mapping>


Ниже, запрос к сервлету который вызовёт скрипт и создаст контракт:
http://localhost:8080/bgbilling/nazir?user=admin&pswd=admin&action=NewContract&pattern_id=10&date=13.10.2010&email=nazim.aghabayov[nospam_here_at]buta_tech.com&fullname=Nazim+Aghabayov

В атаче лежит исходник в проекте NetBeans, конфигурационный файл (bgbnazir/configs) и скрипт для создания контракта (bgbnazir/actionscripts). Пример работает на версии 4.5. Правьте на свой вкус )

Вложения:
Комментарий к файлу: Проект в формате NetBeans IDE
bgbnazir.zip [33.85 КБ]
Скачиваний: 431

Автор:  max [ 15 окт 2010, 23:41 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

в викки?

Автор:  Nazim [ 16 окт 2010, 00:40 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Конечно, надо только немного привести в порядок текст. Как только руки дойдут, то напишу обстятельнее в вики.

Автор:  Nazim [ 25 окт 2010, 02:58 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Продолжая тему "однозапросников", выкладываю скрипт возвращающий текущий баланс (на этот раз через java api).

Чтобы работалo, надо прописать action в properties файле 'nazir.properties'
actionGetBalance=/usr/local/BGBillingServer/nazirscripts/getbalance.bsh

Пример вызова:
http://localhost:8080/bgbilling/nazir?a ... nce&cid=25

где cid, id контракта. Если скрипт завершается успешно, то он возвращает цифру, если произошла ошибка, то 'err'

Правьте по вкусу )

Вложения:
getbalance.bsh.zip [1010 байт]
Скачиваний: 425

Автор:  Cromeshnic [ 25 окт 2010, 06:33 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Ээ.. А зачем повторять функциональность стандартного сервлета? Почему просто им не воспользоваться?

Автор:  Nazim [ 25 окт 2010, 18:31 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Cromeshnic писал(а):
Ээ.. А зачем повторять функциональность стандартного сервлета? Почему просто им не воспользоваться?

Чтобы сделать всё по своему, так как удобно мне. Обращаться к примеру к биллингу из CMS или делать то, чего в стандартном сервлете нет. Кроме того, стандартное не всегда интересно.

Автор:  AlexNVZ [ 30 июл 2016, 22:48 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Понравилась простота реализации.
Пытался повторить пример в первом посте, ругается:
Код:
07-30/19:39:30 ERROR [localhost.localdomain-startStop-1] [/bgbilling] - Servlet [nazir] in web application [/bgbilling] threw load() exce$
java.lang.ClassNotFoundException: com.butatech.bgbilling.nazir.servlet.NazirServlet
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5262)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5550)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

Можно это как то поправить? Сам не силен в Java.

Клиент: вер. 7.0.825 / 27.07.2016 17:59:26
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
Сервер: вер. 7.0.1079 / 28.07.2016 02:48:49
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92

Автор:  Phricker [ 31 июл 2016, 00:09 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Цитата:
регистрацию через web для bgbilling 4.5


Вы вообще чего хотите то?

Автор:  AlexNVZ [ 31 июл 2016, 00:27 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

Phricker писал(а):
Цитата:
регистрацию через web для bgbilling 4.5


Вы вообще чего хотите то?

Хочу автоматизировать многие вещи.
Автоматическая регистрация клиента (создание для него договора после заполнении клиентом формы на сайте), подключение/отключение различных услуг (клиент сам выбирает в своем личном кабинете чего ему надо), обещаный платеж, смена тарифа, и т.д.

Автор:  dimOn [ 31 июл 2016, 00:59 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

у вас класс com.butatech.bgbilling.nazir.servlet.NazirServlet не найден
возможно, вы что-то упускаете

Автор:  AlexNVZ [ 31 июл 2016, 02:46 ]
Заголовок сообщения:  Re: Создание контракта (и не только) одним http запросом

dimOn писал(а):
у вас класс com.butatech.bgbilling.nazir.servlet.NazirServlet не найден
возможно, вы что-то упускаете

Спасибо, я тоже думал в том же направлении, сам файл класса есть, но куда его вставить не могу понять...
Где находятся классы, как расшифровать ссылку на класс?

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