GWAN servlet的生命周期

问题描述:

我正在使用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请求共享?

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://*.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