Возможность добавления пользовательских сервлетов

Основная часть программы и общие вопросы по модулям. Установка и настройка BGBillingServer, BGBillingClient.

Возможность добавления пользовательских сервлетов

Сообщение barguzin2 » 16 фев 2014, 00:27

$this->bbcode_second_pass_quote('', '1')663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера


Можно поподробнее. как ?
barguzin2
Клиент
 
Сообщения: 1080
Зарегистрирован: 09 фев 2011, 15:28

Re: Возможность добавления пользовательских сервлетов

Сообщение skn » 16 фев 2014, 01:13

$this->bbcode_second_pass_code('', 'custom.servlet.keys=s1,s2
custom.servlet.s1.class=ru.myfirm.server.MyServlet1
custom.servlet.s1.mapping=/s1
custom.servlet.s1.filter.keys=cp1251
custom.servlet.s1.filter.cp1251.name=SetCharacterEncodingFilter
custom.servlet.s1.filter.cp1251.class=ru.bitel.server.servlet.filters.SetCharacterEncodingFilter
custom.servlet.s1.filter.cp1251.init-param.keys=encoding,ignore
custom.servlet.s1.filter.cp1251.init-param.encoding.name=encoding
custom.servlet.s1.filter.cp1251.init-param.encoding.value=Cp1251
custom.servlet.s1.filter.cp1251.init-param.ignore.name=ignore
custom.servlet.s1.filter.cp1251.init-param.ignore.value=false
custom.servlet.s2.class=ru.myfirm.server.MyServlet2
custom.servlet.s2.mapping=/s2')
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Возможность добавления пользовательских сервлетов

Сообщение barguzin2 » 16 фев 2014, 10:09

custom.servlet.s1.class= дин. код ?
barguzin2
Клиент
 
Сообщения: 1080
Зарегистрирован: 09 фев 2011, 15:28

Re: Возможность добавления пользовательских сервлетов

Сообщение skn » 17 фев 2014, 00:14

$this->bbcode_second_pass_quote('barguzin2', '[')b]custom.servlet.s1.class= дин. код ?


нет, jar-ка в каталоге с либами
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Возможность добавления пользовательских сервлетов

Сообщение Феанор » 17 фев 2014, 09:01

а область применения? раньше ж тоже можно было свои сервлеты подгрузить, в web.xml прописав..
Феанор
Клиент
 
Сообщения: 431
Зарегистрирован: 30 мар 2009, 17:51

Re: Возможность добавления пользовательских сервлетов

Сообщение skn » 17 фев 2014, 11:53

$this->bbcode_second_pass_quote('Феанор', '') область применения? раньше ж тоже можно было свои сервлеты подгрузить, в web.xml прописав..


тоже самое, только в конфиге.
из плюсов не нужно при обновлениях ослеживать изменения в web.xml
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение Phricker » 16 дек 2016, 17:08

АПну.
А не будет возможности в дин.коде оформлять?
Из плюсов © удобство, и при обновлении (между версиями, когда рекомендуется новую папку скачать) не потеряется.
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Возможность добавления пользовательских сервлетов

Сообщение Artur » 16 дек 2016, 17:13

А чем механизм CustomAPI неудобен?
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".
Аватара пользователя
Artur
Разработчик
 
Сообщения: 940
Зарегистрирован: 27 янв 2010, 16:12
Откуда: Уфа

Re: Возможность добавления пользовательских сервлетов

Сообщение Phricker » 16 дек 2016, 17:33

$this->bbcode_second_pass_quote('Artur', '') чем механизм CustomAPI неудобен?

Там же нужно валидную XML на вход подать и т.п.
А тут просто либо GET либо POST запрос пульнул - что-то сделал, назад ответил.

И честно говоря, я делал интеграцию через сustom API с 1цэ, и не скажу, что там все так просто. Убил кучу времени чтобы 1цэ это все корректно кушало.
А тут за 10 минут набросал скрипт, открыл сервлет в nginx, и отправил POST.
И все работает :)
$this->bbcode_second_pass_code('', 'import bitel.billing.server.CommonExecutor;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test
extends CommonExecutor {
static final Logger logger = Logger.getLogger( Test.class );

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("Hello GET");
doPost(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("Hello POST");
PrintWriter out = response.getWriter();
Setup setup = Setup.getSetup();
Connection con = setup.getDBConnectionFromPool();
ContractManager cm = new ContractManager(con);
String phone = getParameter(request, "phone", "");
String ipAddr = getParameter(request, "ipAddr", "");
logger.info("phone = " + phone);
logger.info("ipAddr = " + ipAddr);
try {
String query = "SELECT cid FROM contract_parameter_type_phone_item WHERE phone = ? ORDER BY cid DESC LIMIT 1 ";
logger.info("query = " + query);
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, phone);
ResultSet rs = ps.executeQuery();
while(rs.next()){
int cid = rs.getInt("cid");
Contract contract = cm.getContractById(cid);
logger.info(contract.getTitle());
out.append(contract.getTitle());
}
rs.close();
ps.close();
}
catch (SQLException e){
logger.error(e.getMessage(), e);
}
finally
{
ServerUtils.closeConnection(con);
}
out.println();
}

private static String getParameter(HttpServletRequest request, String name, String defaultValue) {
String value = request.getParameter(name);
return value != null ? value : defaultValue;
}
}')
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение skn » 16 дек 2016, 17:56

дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Возможность добавления пользовательских сервлетов

Сообщение skyb » 19 дек 2016, 06:24

$this->bbcode_second_pass_quote('skn', '')ин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.

искоропки такое появится?
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение skn » 19 дек 2016, 15:00

$this->bbcode_second_pass_quote('skyb', '')$this->bbcode_second_pass_quote('skn', '')ин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.

искоропки такое появится?


что именно?
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение skyb » 20 дек 2016, 06:32

$this->bbcode_second_pass_quote('skn', '')$this->bbcode_second_pass_quote('skyb', '')$this->bbcode_second_pass_quote('skn', '')ин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.

искоропки такое появится?


что именно?

Возможность написания собственных сервлетов в динкоде
$this->bbcode_second_pass_code('', '
Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
')
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений
Аватара пользователя
skyb
Клиент
 
Сообщения: 7166
Зарегистрирован: 03 авг 2009, 18:42
Откуда: Благовещенск
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение Phricker » 20 дек 2016, 19:27

Господа, подскажите по созданию ServerContext в своем сервлете.
Если я пишу
$this->bbcode_second_pass_code('', 'ServerContext context = ServerContext.get();')
то context == null.

Если я пишу
$this->bbcode_second_pass_code('', 'ServerContext context = new ServerContext(setup, 0, -1);
...
InetServService wsServ = context.getService(InetServService.class, INET_MODULE_ID);')
То работает отчасти. Я могу например работать с InetServService.

Но при этом в чем то другом я могу выловить ошибку
$this->bbcode_second_pass_code('', 'Local event must be generated in ServerContext!')


Второй вариант правильный и мне просто следует оборачивать все в свой созданный контекст наподобии

$this->bbcode_second_pass_code('', 'final ServerContext context = new ServerContext( setup, ConnectionSet.newInstance( setup, false ), 0, userID );
final ThreadContext parentContext = ThreadContext.push( context );
try {
...
}
} finally {
ThreadContext.pop(context, parentContext);
}')

???
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Возможность добавления пользовательских сервлетов

Сообщение Phricker » 21 дек 2016, 16:55

ап
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Возможность добавления пользовательских сервлетов

Сообщение Вторник » 30 дек 2018, 13:17

$this->bbcode_second_pass_quote('barguzin2', '')$this->bbcode_second_pass_quote('', '1')663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера


Можно поподробнее. как ?


Сделал для вас демо-проекты на Java и Scala.
Вторник
 
Сообщения: 83
Зарегистрирован: 15 фев 2018, 11:27
Вернуться к началу

Re: Возможность добавления пользовательских сервлетов

Сообщение Phricker » 30 дек 2018, 16:42

https://docs.bitel.ru/pages/viewpage.ac ... =135888906
Вставлю свои 5 копеек
Динсервисы из коробки и без необходимости добавления своих файлов.
Но пример интересный да. Спасибо
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Возможность добавления пользовательских сервлетов

Сообщение Вторник » 30 дек 2018, 16:52

$this->bbcode_second_pass_quote('Phricker', 'h')ttps://docs.bitel.ru/pages/viewpage.action?pageId=135888906
Вставлю свои 5 копеек
Динсервисы из коробки и без необходимости добавления своих файлов.
Но пример интересный да. Спасибо


Динсервисы у меня здесь https://github.com/alexanderfefelov/doc ... dynservice
Вторник
 
Сообщения: 83
Зарегистрирован: 15 фев 2018, 11:27
Вернуться к началу


Вернуться в Ядро системы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1