BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 05:48

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: 16 фев 2014, 00:27 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Цитата:
1663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2014, 01:13 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Код:
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 фев 2014, 10:09 
Не в сети
Клиент

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 фев 2014, 00:14 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
barguzin2 писал(а):
custom.servlet.s1.class= дин. код ?


нет, jar-ка в каталоге с либами


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 фев 2014, 09:01 
Не в сети
Клиент

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 фев 2014, 11:53 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Феанор писал(а):
а область применения? раньше ж тоже можно было свои сервлеты подгрузить, в web.xml прописав..


тоже самое, только в конфиге.
из плюсов не нужно при обновлениях ослеживать изменения в web.xml


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2016, 17:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
АПну.
А не будет возможности в дин.коде оформлять?
Из плюсов © удобство, и при обновлении (между версиями, когда рекомендуется новую папку скачать) не потеряется.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2016, 17:13 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
А чем механизм CustomAPI неудобен?

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2016, 17:33 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Artur писал(а):
А чем механизм CustomAPI неудобен?

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

И честно говоря, я делал интеграцию через сustom API с 1цэ, и не скажу, что там все так просто. Убил кучу времени чтобы 1цэ это все корректно кушало.
А тут за 10 минут набросал скрипт, открыл сервлет в nginx, и отправил POST.
И все работает :)
Код:
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2016, 17:56 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2016, 06:24 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
skn писал(а):
дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.

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

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2016, 15:00 
Не в сети
Разработчик

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

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


что именно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 дек 2016, 06:32 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
skn писал(а):
skyb писал(а):
skn писал(а):
дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код.

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


что именно?

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

_________________
Код:
  Клиент: вер. 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
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 дек 2016, 19:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Господа, подскажите по созданию ServerContext в своем сервлете.
Если я пишу
Код:
ServerContext context = ServerContext.get();

то context == null.

Если я пишу
Код:
ServerContext context = new ServerContext(setup, 0, -1);
...
InetServService wsServ = context.getService(InetServService.class, INET_MODULE_ID);

То работает отчасти. Я могу например работать с InetServService.

Но при этом в чем то другом я могу выловить ошибку
Код:
Local event must be generated in ServerContext!



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

Код:
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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 дек 2016, 16:55 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
ап

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 дек 2018, 13:17 
Не в сети

Зарегистрирован: 15 фев 2018, 11:27
Сообщения: 94
Карма: 5
barguzin2 писал(а):
Цитата:
1663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера


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


Сделал для вас демо-проекты на Java и Scala.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 дек 2018, 16:42 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
https://docs.bitel.ru/pages/viewpage.ac ... =135888906
Вставлю свои 5 копеек
Динсервисы из коробки и без необходимости добавления своих файлов.
Но пример интересный да. Спасибо

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 дек 2018, 16:52 
Не в сети

Зарегистрирован: 15 фев 2018, 11:27
Сообщения: 94
Карма: 5
Phricker писал(а):
https://docs.bitel.ru/pages/viewpage.action?pageId=135888906
Вставлю свои 5 копеек
Динсервисы из коробки и без необходимости добавления своих файлов.
Но пример интересный да. Спасибо


Динсервисы у меня здесь https://github.com/alexanderfefelov/doc ... dynservice


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.102s | 54 Queries | GZIP : On ]