forum.bitel.ru http://forum.bitel.ru/ |
|
Возможность добавления пользовательских сервлетов http://forum.bitel.ru/viewtopic.php?f=22&t=8960 |
Страница 1 из 1 |
Автор: | barguzin2 [ 16 фев 2014, 00:27 ] |
Заголовок сообщения: | Возможность добавления пользовательских сервлетов |
Цитата: 1663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера Можно поподробнее. как ? |
Автор: | skn [ 16 фев 2014, 01:13 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
Код: 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 |
Автор: | barguzin2 [ 16 фев 2014, 10:09 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
custom.servlet.s1.class= дин. код ? |
Автор: | skn [ 17 фев 2014, 00:14 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
barguzin2 писал(а): custom.servlet.s1.class= дин. код ? нет, jar-ка в каталоге с либами |
Автор: | Феанор [ 17 фев 2014, 09:01 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
а область применения? раньше ж тоже можно было свои сервлеты подгрузить, в web.xml прописав.. |
Автор: | skn [ 17 фев 2014, 11:53 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
Феанор писал(а): а область применения? раньше ж тоже можно было свои сервлеты подгрузить, в web.xml прописав.. тоже самое, только в конфиге. из плюсов не нужно при обновлениях ослеживать изменения в web.xml |
Автор: | Phricker [ 16 дек 2016, 17:08 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
АПну. А не будет возможности в дин.коде оформлять? Из плюсов © удобство, и при обновлении (между версиями, когда рекомендуется новую папку скачать) не потеряется. |
Автор: | Artur [ 16 дек 2016, 17:13 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
А чем механизм CustomAPI неудобен? |
Автор: | Phricker [ 16 дек 2016, 17:33 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
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; } } |
Автор: | skn [ 16 дек 2016, 17:56 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код. |
Автор: | skyb [ 19 дек 2016, 06:24 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
skn писал(а): дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код. искоропки такое появится? |
Автор: | skn [ 19 дек 2016, 15:00 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
skyb писал(а): skn писал(а): дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код. искоропки такое появится? что именно? |
Автор: | skyb [ 20 дек 2016, 06:32 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
skn писал(а): skyb писал(а): skn писал(а): дин код работает через свой класс лоадер про которой томкат ни чего не знает, т.е. томкат не найдет сервлеты написанные в дин. коде. Что бы это заработало надо допиливать встроенные томкат... или например добавить какой нибудь сервлет через либы, а он уже в свою очередь будет подгружать дин. код. искоропки такое появится? что именно? Возможность написания собственных сервлетов в динкоде |
Автор: | Phricker [ 20 дек 2016, 19:27 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
Господа, подскажите по созданию 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); } ??? |
Автор: | Phricker [ 21 дек 2016, 16:55 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
ап |
Автор: | Вторник [ 30 дек 2018, 13:17 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
barguzin2 писал(а): Цитата: 1663 03.02.2014 19:42:17 ДОБАВЛЕНО Kernel: Возможность добавления пользовательских сервлетов, через описания их и в конфигурации сервера Можно поподробнее. как ? Сделал для вас демо-проекты на Java и Scala. |
Автор: | Phricker [ 30 дек 2018, 16:42 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
https://docs.bitel.ru/pages/viewpage.ac ... =135888906 Вставлю свои 5 копеек Динсервисы из коробки и без необходимости добавления своих файлов. Но пример интересный да. Спасибо |
Автор: | Вторник [ 30 дек 2018, 16:52 ] |
Заголовок сообщения: | Re: Возможность добавления пользовательских сервлетов |
Phricker писал(а): https://docs.bitel.ru/pages/viewpage.action?pageId=135888906 Вставлю свои 5 копеек Динсервисы из коробки и без необходимости добавления своих файлов. Но пример интересный да. Спасибо Динсервисы у меня здесь https://github.com/alexanderfefelov/doc ... dynservice |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |