2014-10-07 4 views
1

Я использую сервлеты C и шкаф Киото для хранения базы данных.Жизненный цикл сервлета GWAN

Мой вопрос: как G-wan вызывает сервлеты?

при сравнении с Java-сервлетом у них есть инициация и обслуживание, разрушающие жизненный цикл? как работает гван?

int main(int argc, char *argv[]) 
{  
    KCDB *db = kcdbnew(); 

    if(!kcdbopen(db, "casket.kch",KCOREADER)) { 
    fprintf(stderr, "open error: %s\n", kcecodename(kcdbecode(db))); 
    } 

Можно ли сначала открыть соединение с базой данных и поделиться им несколькими запросами HTTP?

ответ

1

G-WAN компилирует сервлеты на лету и запускает их при запросе их адресов. Например: запускает hello.c, когда /?hello.c или /? Hello запрошен и т. Д. Таким образом, ваши всплывающие переменные сервлета освобождаются при завершении запроса. Поэтому вам нужно использовать указатели на сервере, виртуальном хосте или обработчике, чтобы сохранить переменные. Для определения глобальных указателей, вы можете посмотреть на этом простом примере:
http://gwan.com/source/persistence.c

Вы также можете взглянуть на эти ссылки:
- GWAN Key-Value persistent multiple store
- GWAN Key-Value persistent store
- How to hold data structures in memory G-wan with Java/Scala
- https://stackoverflow.com/a/16278305/1576270
- http://gwan.com/source/mysql.c

+0

очень ясный ответ –

+1

* «ваши переменные во всём сервлете [освобождены], когда запрос [a] закончился» * это происходит только тогда, когда сценарий был отредактирован и поэтому автоматически перезагружается G-WAN. В остальное время переменные сервлета являются ** статическими ** (ограничены сферой действия сервлета), отсюда и необходимость «глобальных» (разделяемых) указателей. – Gil

+0

It'mean с одним запросом gwan запустит процесс java для его обработки. Так что это может быть плохо, java cold начинает очень медленно. –

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