Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417016
  • 博文数量: 48
  • 博客积分: 1032
  • 博客等级: 上士
  • 技术积分: 1256
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-19 13:24
文章分类

全部博文(48)

文章存档

2014年(3)

2013年(23)

2012年(22)

分类: 系统运维

2012-12-06 13:39:27

服务器端:simpleModule.c
#include
#include
#include "/usr/lib/appweb/inc/appweb.h"
#include "/usr/lib/appweb/inc/ejs.h"

EjsVar *MyFunction(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv)
{
        int i = 1;
        if ( i == 1) {
        ejsWrite(ejs, "

Hello Linux

");
        }
        else{
        ejsWrite(ejs, "

Hello World

");
        }
        return 0;
}

MprModule *maSimpleModuleInit(MaHttp *http)
{
        MprModule   *module;
        Ejs *ejs;
        /**
        *创建Module  
        *simpleModule为模块的名字
        *3.3.4为appweb版本号
        **/
        module = mprCreateModule(http, "simpleModule", "3.3.4", NULL, NULL, NULL);
        if (module == 0)
            return 0;
        ejs = ejsGetMaster(http);
        //绑定自己的C函数  
        ejsDefineGlobalFunction(ejs, "myTest", MyFunction);
            return module;
这里两个重点:
1、创建模块mprCreateModule(),模块的名字必须是独一无二的;
2、绑定c函数ejsDefineGlobalFunction();访问的时候通过绑定后的函数名访问c函数,即myTest();
编译生成动态库:gcc simpleModule.c -fPIC -shared -o mod_test.so -L /usr/lib/appweb/lib -lappweb -lajs
将动态库拷贝到/usr/lib/appweb/modules目录下面(该目录是appweb.conf配置文件指定搜索路径)
在appweb里面添加模块加载:(这一步还是很重要的)在appweb.conf的ejs模块加载后填上这句
LoadModule simpleModule mod_test
simpleModule:就是我们的模块名字
mod_test:是动态库的名字

客户端:hello.ejs:

welcome to appweb ejs:<% myTest() %>

 
这样建立的hello.ejs不能直接使用,需要经过编译
ajsweb hello.ejs
出现[BUILD]: hello.ejs代表编译成功,相应的会有hello.mod生成(这个mod文件的生成困扰了我一段时间。。。)
运行appweb --config /etc/appweb/appweb.conf
在浏览器输入127.0.0.1/hello.ejs即可看到结果:

welcome to appweb ejs:

Hello Linux


OK!

阅读(4022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~