Привет! Недавно понадобилось сделать регистрацию через 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. Правьте на свой вкус )