2014-09-16 1 views
0

Что я пытаюсь сделать, это веб-сервер, который просто отвечает на запросы клиентов. Я могу использовать PHP-скрипты, исполняемый файл, написанный на C++, или службы, написанные на Java, для создания ответа, но проблема заключается в том, что их всегда нужно загружать с каждым запросом от клиента, что снижает эффективность и требует сохранения данных в некоторых файлах или db, чтобы обменивать их между запросами (нельзя использовать сеансы, обмениваясь данными между разными клиентами).Скрипт веб-сервера, который работает постоянно

Итак, я ищу какой-то скрипт, который будет постоянно работать на сервере, «слушать» запросы, выводить ответ и отправлять его обратно. Полезные, но не необходимые функции будут:
- на основе C/C++, но не должен быть
- в состоянии иметь дело с HTTP, поскольку клиенты это сайт отправки JSON
- могут быть легко использованы с какое-то серверное решение

Моя идея состояла в том, чтобы иметь одну программу на C++, постоянно поддерживающую всю информацию в ЦП и использующую ее память с небольшими программами, которые будут запускаться с каждым запросом, который будет захватывать данные из общего памяти и сделать некоторую обработку для создания ответа (без обширных вычислений, можно загружать несколько раз). Звучит ли это немного?

Было бы достаточно, чтобы назвать некоторые технологии работы проверить, спасибо, Martin C.

ответ

0

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

Сервлеты имеют метод init(), который можно использовать для инициализации данных при запуске сервера приложений. Эти данные затем доступны для всех запросов, например:

@WebServlet(urlPatterns="/somePath", loadOnStartup=1) 
public class MyServlet extends HttpServlet { 
    private Object sharedData; 

    @Override 
    public void init() throws ServletException { 
     sharedData = <Your code to load data> 
    } 

    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
     PrintWriter out = response.getWriter(); 
     out.println(sharedData); // This is just an example of using sharedData 
     ... 
    } 
} 

Обратите внимание, что есть только один экземпляр сервлета, поэтому будут загружены данные только один раз и тот же экземпляр сервлета будет обслуживать все запросы (с несколькими потоками) ,

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

+0

Спасибо за ваш комментарий, Дэвид. Я собираюсь поработать над ним и попробовать, но это похоже на мои цели. –

 Смежные вопросы

  • Нет связанных вопросов^_^