HTTP-приложение сервер на основе Netty
Раньше в одной компании мне приходилось выполнять небольшие задачи: создание простого HTTP-интерфейса для выполнения некоторых задач (обычно требовалось всего несколько строк кода). Я начал писать простой servlet и запускал его через Tomcat. Со временем количество таких маленьких web-проектов увеличивалось, и чтобы обновить один проект, пришлось каждый раз перезапускать Tomcat (так как автоматическое перезапуска было отключено), что было очень неудобно. Начальник хотел, чтобы эти функции могли работать самостоятельно и предоставлять услуги без необходимости запуска Tomcat. Из этого возникла необходимость найти встраиваемый контейнер servlet (в то время я был молодым и не мог отказаться от использования контейнера servlet...), и самым подходящим вариантом казался Jetty, но я так ничего и не сделал.Сейчас, когда нужно обрабатывать запросы с небольшим уровнем нагрузки, можно реализовать свой HTTP-сервер для обработки простых GET и POST запросов (например, текстового запроса, ответ тоже текстовый или JSON). После изучения протокола HTTP, я понял, что для его парсинга потребуется много кода, а также самописная реализация будет иметь проблемы с производительностью (что важно для будущего развития). Поэтому я решил использовать Netty, который имеет реализацию HTTP, и следуя примерам, я создал свой собственный сервер. Основная идея заключается в том, чтобы в ServerHandler перехватывать запросы, преобразовывать объект Request Netty в мой собственный объект Request, после чего передавать его через Action пользователя, генерировать Response и затем преобразовывать его обратно в Response Netty для отправки клиенту.В этом проекте используется версия Netty 4.X, поскольку она достаточно стабильна и регулярно обновляется. В будущем, если найдётся время, я планирую добавить больше функциональности, надеясь сделать этот сервер высокопроизводительным HTTP-сервером.
package com.xiaoleilu.loServer.example;
import com.xiaoleilu.loServer.LoServer;
import com.xiaoleilu.loServer.Request;
import com.xiaoleilu.loServer.Response;
import com.xiaoleilu.loServer.ServerSetting;
/**
* Пример программы loServer<br>
* Объект Action используется для управления бизнес-процессами, аналогично объекту Servlet<br>
* Перед запуском сервера необходимо добавить путь и этот Action в ActionMap объекта ServerSetting<br>
* Используйте метод ServerSetting.setPort для установки порта прослушивания, здесь он установлен на 8090 (если не указано, будет использоваться значение по умолчанию - 8090)<br>
* Затем вызовите LoServer.start() для запуска службы<br>
* Для доступа к http://localhost:8090/example?a=b через браузер вы можете увидеть отображение ответа a: b на странице<br>
* @author Looly
*
*/
public class ExampleAction implements Action {
``````markdown
@Override
public void doAction(Request request, Response response) {
String a = request.getParam("a");
response.setContent("Ответ a: " + a);
}
public static void main(String[] args) {
ServerSetting.addAction("/example", ExampleAction.class);
ServerSetting.setPort(8090);
LoServer.start();
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )