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. Правьте на свой вкус )
|
Автор: | 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' Правьте по вкусу )
|
Автор: | 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/ |