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

OSCHINA-MIRROR/loolly-loServer

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

loServer

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-сервером.

Как использовать

  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 через браузер вы можете увидеть отображение ответа 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 )

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

Введение

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

Обновления

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

Участники

все

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

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