Блог

Web server code in java

В противном случае управление редактированием и параметризацией HTML, вероятно, приведет к тому, что работа с HTTP будет выглядеть как noughts-n-crosses. Естественно, все зависит от того, насколько вы гибки. Если это факсимильная машина с меню, она может быть очень простой. Чем больше взаимодействий, тем "более толстой" должна быть ваша структура. Хороший вопрос, удачи! Когда-то я искал нечто похожее - легкий, но полностью функциональный HTTP-сервер, который я мог бы легко встроить и настроить.

Я нашел два типа потенциальных решений:. Он стремится быть совместимым с RFC и включает в себя обширную документацию и множество полезных функций при сохранении раздувания до минимума. Возможности включают в себя: Spark является самым простым, вот краткое руководство: В основном базовый веб-сервер, написанный в javaможно найти здесь http: Возможно создание httpserver, обеспечивающего базовую поддержку сервлетов J2EE только с JDK и сервлета api всего за несколько строк кода.

Я нашел это очень полезным для сервлетов для тестирования модулей, поскольку он запускается намного быстрее, чем другие легкие контейнеры мы используем причал для производства. Большинство очень легких httpservers не обеспечивают поддержку сервлетов, но мы нуждаемся в них, поэтому я думал, что буду делиться.

Он использует com. HttpServer для базовой поддержки http. Мне очень нравится то, что вы можете сделать с этой комбинацией, и относительно немного API для изучения. Этот код лучше нашего, вам нужно только добавить 2 библиотеки: Мне особенно нравится его резьбовая модель. Отъезд takes. Посмотрите https: Как насчет проекта Apache Commons HttpCore?

В JDK есть для этого com. Может проще nginx поставить, чем использовать com. Это уже зависит от конкретной задачи. А если просто отдавать странички, то решение с проверенным отдельным сервером безусловно лучше чем самоделка. Ну если ограничиваться джавой то resin, tomcat, jetty, можно еще продолжить. Http сервер был выбран мной лишь потому что это ближе хабрасообществу, чем какой то абстрактный tcp сервер. Хотя я бы никогда и ни кому не посоветовал бы использовать com. Хочу так же заметить, что написание примеров с велосипедами ни как не связано.

HTTP сервер за 15 минут / Хабр

А вообще, формально Вы конечно же правы, задача именно так ставилась быстро сделать http-сервер. Но может я не совсем точно сформулировал постановку задачи к своему решению, но показать людям я хотел именно этот код, он полезен и понятен, а кому то даже понравился. Было бы интересно узнать обоснование, почему com.

Это я сейчас без подколов спрашиваю. И решение использовать com.

работает на 1с битрикс газета

Shchvova 9 сентября в А разве тред на коннект это не то, чего делать нельзя? Я вообще не силен в нетворкинге, но мне почемуто это не очень….

хостинг серверов cpanel

Вообще то так делают почти все сервера, позволяющие выполнять бизнес логику во время запроса. Для бизнес логики ведь нужен тред, да и программировать проще, когда выполнение одного куска кода идет в одном триде. Просто обычно количество тридов ограничено, например не большеи все они берутся из пула, а если все заняты, то пришедший запрос ожидает в очереди, пока освободится какой нибудь трид.

По моему такой код это такая крутая уязвимость на медленный ддос. Я не хакер вовсе, просто мы читаем хедеры, если нам из будут долго посылать, то можно много много потоков наделать. А если их будет слишком то: В примере ни чего не ограничено, такой сервер не имеет права на жизнь: Вы абсолютно правы, большинство серверов можно положить кучей способов, но так же существует и куча различных защит.

Например, в качестве защиты от кучи коннектов с медленной отсылкой хедеров, можно установить максимальное количество коннектов с одного IP. И делать это можно как средствами самого сервера, так и средствами файрвола.

В свое время й год я написал и Компьютерра опубликовала: На Смолтолке тоже около. Не самые минималистические на уровне helloworld, а достаточные для раздачи файлов.

Java тогда еще только-только появилась, на ней не пробовал. Теперь вижу, что минимум 70 строк на Java: Когда-то в древности каждый программист начинал с того, что писал собственный текстовый редактор. Собственный веб-сервер — хорошее упражнение для современного программиста: Что обсуждают. Сейчас Вчера Неделя Прототип за 1 день вместо недель: Сергей Зонов: Как заменить лампочку на рабочем месте так, чтобы тебя не уволили? Самое читаемое. Что курил конструктор: Рекомендуем Разместить. Аккаунт Войти Регистрация.

Услуги Реклама Тарифы Контент Семинары. Настройка языка. О сайте. Служба поддержки. Мобильная версия.

Заметки программистера: Http в Java. Часть - Простой web server.

Интерфейс Русский. Сохранить настройки. В этой статье вы найдете примеры использования классов из пакета com. Если вы считаете, что это проприетарное API и его использовать нельзя, сразу переходите к заключительной части статьи за разъяснениями почему вы не правы. Метод HttpServer. Метод bind вводит соответстиве между HTTP сервером и связкой адрес-порт. Обратите внимание на второй параметр метода - он называется backlog и указывает максимальное количество TCP соединений, которые будут храниться в очереди запросов сервера.

Когда количество соединений привысит это значение, все новые запросы будут игнорироваться.

Простой HTTP-сервер в Java с использованием только Java SE API

Только методы синглтонов нужно будет не забывать синхронизировать по необходимости: Да, правильно - если одновременно попытаются подключиться 10 клиентов - забота контейнера сервлетов томката в том чтобы для каждого из них вызвался doPost на каком-нибудь объекте класса LicenseManager может создаст несколько объектов, может на одном всё сделает.

Главное иметь в виду что он по-моему может заюзать один и тот же объект, поэтому например не надо в классе сервлета использовать изменяемые поля их ведь два клиента из двух потоков смогут одновременно менять.

Второе узкое место - соединение с БД. Если лезут 10 клиентов, а соединение только одно, они вынуждены будут друг друга ждать поэтому важно будет сделать синхронизацию! Хотя если у вас не так много клиентов, это почти фантастическое совпадение. Если очень понадобится можно будет потом заюзать пул соединений с БД. Что ещё хм Логи я бы рекомендовал в каком-то виде оставить - ну хотя бы кто стучался и что ему отдавали, или эксепшны логировать - хотя в логах сервера большая часть инфы о запросах и исключениях будет всё равно.

И для некоторых баз возможно закрывать соединение с БД каждый раз не стоит если клиенты часто ходят ну то есть держать его минуту скажем и использовать по-новой если кто-то ещё подключился - я замечал что именно переоткрытие может подтормаживать. А если я открою соединение с базой в конструкторе моего синглтона DBConnection: Только соединение будет открыто постоянно.

Но другой вопрос, что если оно заэскпайрилось или оборвалось по техн. Оно ж открыто опять не будет, ведь синглтон уже создан.

java - простой HTTP-сервер в Java с использованием только Java SE API - Qaru

Ну да, такая проблема. Лучше прямо в методе "getConnection" или что-то такое проверять есть ли соединение, и если есть брать его - если нет - открывать новое Ну или погуглить что-то вроде apache dbcp - там вроде как раз библиотечка чтобы создать пул соединений и дальше без напряга он сам будет по просьбе давать имеющиеся соединения или открывать новые. А вообще вы оцените сколько у вас реально клиентов вы об этом ничего не говорили и как часто они ходят то есть чтоб получить вероятность совпадения - да и время на выполнение открытия-закрытия соединения с БД.

Если вас всё устраивает, то можно открывать и закрывать каждый раз без проблем.