2015-12-02 3 views
1

У меня есть клиентское программное обеспечение, которое написано на C++/C# и базе данных. Теперь я не хочу, чтобы клиент напрямую обращался к базе данных, поэтому я подумал о размещении сервера приложений посередине. Это нужно получить от клиента короткий запрос, запросить базу данных для новых данных, выполнить некоторую фильтрацию (которая не может быть выполнена в sql), а затем вернуть данные клиенту.Сервер приложений Java без HTTP

Мой поиск такого программного обеспечения привел меня в Glassfish или Tomcat, но моя проблема в понимании заключается в том, что они всегда хотят поговорить с http с html/jsp. Поскольку большинство моих данных зашифровываются в любом случае, мне не нужны такие простые текстовые протоколы, и я был бы полностью доволен тем, что просто берет поток байтов. С другой стороны, было бы неплохо, если бы сервер обработал пул потоков для меня (не хочу реализовывать все это с нуля).

После более чем одного дня поиска/тестирования я еще более смущен, чем в начале (ejb, beans, servlet, websocket, ... так много вещей в google, прежде чем понимать только самые простые руководства).

TL; DR: как я могу получить Tomcat/Glassfish, чтобы просто открыть сокет и создать новый поток для каждого запроса без участия какого-либо HTML/CSS/JSP?

+0

Если вы используете спокойные веб-службы, вы можете передавать параметры между клиентом и сервером. Это больше соответствует вашему планируемому подходу. Хорошее место для начала - https://spring.io/guides/gs/rest-service/. Используя конфигурацию пружины, вы можете настроить и настроить большинство своих ресурсов. Существует множество примеров. –

+1

Одним словом: вы не делаете, если не будете массово злоупотреблять Tomcat. HTTP - это протокол самого низкого уровня, который Tomcat хочет поговорить. Что случилось с использованием HTTP и возвращением двоичных данных из сервлета? –

+0

Вам не нужны HTML, CSS, JSP. Напишите простой сервлет, чтобы запросить базу данных и вернуть результат как XML, JSON или обычный текст. Или изобретать колесо и написать собственный протокол. Но тогда вам вообще не нужен сервер приложений. Недостаточно простого байтового потока. Вам необходимо передать некоторые параметры и вернуть результаты в структурированном формате, который ваш клиент понимает. По крайней мере, вам нужно реализовать какой-то базовый протокол. – vanje

ответ

0

Jetty и Tomcat - это так называемый сервлет-контейнер и, таким образом, ориентированы на HTTP-обмены. Glassfish - это сервер приложений, который использует контейнер сервлетов в качестве одного из своих модулей. Я бы не стал думать в этом направлении - это все больше похоже на веб-приложения и веб-сервисы - на некоторых уровнях слишком высока то, о чем вы просите.

Я думаю, вам стоит больше взглянуть на sth. например, Netty, который является «сервером высокопроизводительных протоколов». Взгляните на документацию here (даже какой-то учебник, который может поместиться в вашем случае использования).

0

GlassFish - это «сервер приложений предприятия», ориентированный на спецификацию Java EJB. Это, безусловно, преувеличено для вашей цели. Вы можете попробовать Tomcat. Это «контейнер сервлетов», предназначенный для спецификации Java Servlet. Сервлеты имеют одну цель: прослушивание входящего URL (запроса), выполнение кода Java и возврат ответа, обычно по HTTP.

Возможно, вы открыли свой собственный (обычный) ServerSocket, например, используя ServletContextListener (который будет запущен после запуска вашего приложения). Но вы должны пойти на более высокий протокол для отправки данных, например Hessian and Burlap, который реализован как на Java, так и на C++ и easy to set up.