Основанный на Netty HTTP-сервер приложений
Во время работы в предыдущей компании у меня было несколько небольших задач: написать небольшой HTTP-интерфейс для обработки некоторых задач (эта задача часто требует всего лишь нескольких строк кода). Затем я начал писать простой сервлет и размещать его на Tomcat. Со временем количество небольших веб-проектов на Tomcat увеличивалось, и в конечном итоге для обновления одного проекта приходилось перезапускать Tomcat (без настройки горячего запуска), что было очень неудобно. Руководство решило, что не стоит размещать всё на Tomcat, а лучше писать функциональность, которая может работать независимо и предоставлять услуги.
Таким образом, возникла потребность найти встроенный контейнер сервлетов (помню, тогда я был молод и не мог избавиться от контейнера сервлетов…), который бы удовлетворял требованиям. Похоже, Jetty соответствовал требованиям, и я остановился на нём.
Теперь, когда я думаю о том, чтобы справиться с некоторыми не слишком сложными запросами, я могу создать собственный HTTP-сервер приложений для обработки простых запросов Get и Post (это просто текст запроса и ответ в виде текста или JSON). Изучив HTTP-протокол, я обнаружил, что написание анализатора требует много усилий, и производительность также является серьёзной проблемой (проблема производительности рассматривается в будущем), поэтому я решил использовать Netty, обнаружив, что он имеет реализацию, связанную с HTTP. Следуя инструкциям Example, я создал свой собственный сервер приложений. Идея проста: в ServerHandler перехватываются запросы, объект Netty Request преобразуется в мой собственный объект 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 отобразит response a: b на странице<br>
* @author Looly
*/
public class ExampleAction implements Action{
@Override
public void doAction(Request request, Response response) {
String a = request.getParam("a");
response.setContent("response a: " + a);
}
public static void main(String[] args) {
ServerSetting.addAction("/example", ExampleAction.class);
ServerSetting.setPort(8090);
LoServer.start();
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )