1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/loolly-loServer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LoServer

Основанный на 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-сервером.

Использование

  1. Создайте класс, реализующий интерфейс Action, например, я создал ExampleAction.
  2. Вызовите ServerSetting.addAction("/example", ExampleAction.class), чтобы добавить сопоставление между путём запроса и Action.
  3. ServerSetting.setPort(8090) для установки порта прослушивания.
  4. LoServer.start() для запуска службы.
  5. Доступ к http://localhost:8090/example в браузере.

Код

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Расширить Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/loolly-loServer.git
git@gitlife.ru:oschina-mirror/loolly-loServer.git
oschina-mirror
loolly-loServer
loolly-loServer
master