Какой веб-сервер Java здесь наиболее подходит?

Я разрабатываю простое веб-приложение, которое содержит эти 3 компонента:

  1. клиент, который использует Ajax, javascript, html для отображения данных в браузере.
  2. Веб-сервер Java, который взаимодействует между клиентом и объектом обработки данных.
  3. объект обработки данных, реализованный на C++.

Мне нужно решить, какой веб-сервер Java использовать. Вот некоторые варианты:

а) используйте класс httpsserver в java (com.sun.net.httpserver) и создайте многопоточный процесс.

б) использовать сервер Glassfish и развернуть на нем приложение, создающее веб-страницу и т. д.

в) использовать причал.

d) ?

Критерии выбора веб-сервера:

  1. Стабильность (процесс (веб-сервер) должен работать несколько дней без перезагрузки)

  2. Максимально возможные одновременные запросы составляют около 200, а в среднем около 30.

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

Ваши предложения очень ценятся.

Благодарю вас. Рон.


person sbr    schedule 21.09.2009    source источник
comment
если компонент обработки данных написан на C++, зачем вам java-сервер?   -  person skaffman    schedule 22.09.2009
comment
спасибо скафман. знаете ли вы о методе создания стабильного HTTP-сервера на C++? должен поддерживать Ajax   -  person sbr    schedule 22.09.2009
comment
Возможно, вы захотите исправить свои теги, так как, судя по вашим ответам, ключевые слова теперь очень неверны.   -  person James Black    schedule 22.09.2009
comment
Я не человек .net, но я предполагаю, что сервер приложений .net был бы лучшим выбором для упаковки модуля C++, не так ли?   -  person skaffman    schedule 22.09.2009


Ответы (4)


Не используйте класс HTTP-сервера Java.

Glassfish хорош, но, вероятно, больше, чем вам нужно.

Пристань будет работать нормально.

Имейте в виду, что если вы используете C++ и используете JNI для взаимодействия с Java, любые сбои сегмента убьют весь сервер (по сравнению с исключением в чистой Java, которое просто убьет запрос, и контейнер сможет восстановиться).

person Will Hartung    schedule 21.09.2009
comment
Я намерен использовать сокеты java TCP для IPC с сущностью С++ через XML. объект обработки данных C++ независим и может работать на разных машинах. Не могли бы вы сразу указать причины для исключения класса httpsserver? - person sbr; 22.09.2009
comment
JAX-WS при запуске из J2SE использует HTTP-сервер Sun, и мы обнаружили, что его производительность ужасна. Взять тот же сервис и развернуть его в Tomcat или Glassfish вместо отдельного приложения J2SE было трудоемко. Тем не менее, нет никаких причин, по которым вы не могли бы встроить Jetty и использовать его как сервер Sun (конечно, детали могут различаться). Это даст вам опыт, аналогичный использованию классов Sun. И тот, что в Java 6, вполне может быть лучше, чем тот, что в Java 5. - person Will Hartung; 22.09.2009

Я использовал Resin в течение нескольких лет, и он очень хорош и стабилен, рекомендуется на 100 %.

person OscarRyz    schedule 21.09.2009

Tomcat сможет это сделать, но вы должны указать требования на стороне java. Например, используете ли вы какую-либо функциональность J2EE?

Для кеширования вам понадобится что-то вроде кеша JBoss?

Используете ли вы JNI для взаимодействия Java с серверной частью C++, или используете ESB, или какой-то другой подход?

Какой тип данных кэшируется?

Обновление: исходя из вашей информации, я бы предложил не использовать Java, а использовать для этой связи сервер на основе C++ TCP. Таким образом, у вас не будет проблем с интерфейсом JNI/C++. Вы можете довольно легко написать сервер C++, и если вы используете библиотеки Boost, вы будете близки к новой спецификации C++. Темы вы можете посмотреть на: http://www.boost.org/doc/libs/1_40_0/doc/html/thread.html

person James Black    schedule 21.09.2009
comment
Я намерен использовать сокеты java TCP для IPC с сущностью С++ через XML. объект обработки данных C++ независим и может работать на разных машинах. Кэширование: для данных, полученных от объекта C++. это данные ответов на запросы клиентов, которые обновляются примерно раз в день. например список типов пользователей в системе.. он будет храниться в виде массива на веб-сервере - person sbr; 22.09.2009
comment
Спасибо, Джеймс. Я не использую какие-либо специальные функции J2EE. Роль этого веб-сервера заключается в том, чтобы иметь возможность общаться по протоколу http и предоставлять доступ в браузере. - person sbr; 22.09.2009
comment
Затем используйте apache, который очень стабилен и масштабируем, и пишите свои cgi-приложения на C++. Так я начал свое веб-программирование. :) - person James Black; 22.09.2009

Я бы выбрал Tomcat.

person Pablo Santa Cruz    schedule 21.09.2009