2014-10-07 67 views
1

我正在使用C servlets和Kyoto cabinet來存儲數據庫。GWAN servlet的生命週期

我的問題是,G-wan如何調用servlet?

當與java servlet比較時,他們有init和service會破壞生命週期嗎? gwan如何工作?

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即時編譯servlet並在請求地址時運行它們。例如:當/?hello.c或/?hello請求等時運行hello.c ...因此請求結束時,您的servlet範圍的變量已釋放。所以你必須使用服務器,虛擬主機或處理程序指針來保存你的變量。要設置全局指針,你可以看看這個簡單的例子:
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

非常明確的答案 – 2014-10-08 02:29:24

+1

*「您的servlet範圍內的變量在[a]請求結束時被釋放」*它只發生在腳本編輯完成後因此由G-WAN自動重新加載。剩下的時間,servlet變量是** static **(僅限於servlet的範圍),因此需要「全局」(可共享)指針。 – Gil 2014-10-14 07:05:05

+0

這意味着一個請求gwan將啓動一個java進程來處理它。所以這可能是壞的方法,java冷啓動它非常慢。 – 2014-10-20 02:03:17