v2.6.3 后支持


### 1、开发 solon faas 服务简单吗?

很难！入门简单，成体系很难：

* 几乎没有代码提示
* 没法单步调试（只能写完，运行看错误信息）

它适合做些灵活的（或动态的），应紧的，很小的，散乱的需求。场景匹配了就好用，不匹配就难用。

### 2、能不能指定目录提供 faas 服务?

能。比如我们指定 faas 目录，提供服务：

```java
@SolonMain
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //让 Luffy 的处理，接管所有 http 请求处理
            app.http("/faas/**", new LuffyHandler());
            
            //添加文件目录加载器（根目录不要变）
            app.context().wrapAndPut(JtFunctionLoader.class, new JtFunctionLoaderFile("./luffy/"));
        });
    }
}
```

对文件目录也相应调整下，把函数文件也存到 faas 二级目录下：
```
/luffy/faas/
```

### 3、能不能把 faas 文件放到数据库里？

能。参考 JtFunctionLoaderFile 写个函数加载器。示例：

```java
//随便写的哦，自己要做好缓存和更新处理
public class JtFunctionLoaderDb implements JtFunctionLoader {
    @Override
    public AFileModel fileGet(String path) throws Exception {
        return db.table("faas_file")
                 .whereEq("path", path)
                 .selectItem("*", AFileModel.class);
    }
}
```

### 4、如果有控制台管理 faas 文件，更新后怎么清除缓存？

调用接口

```java
JtRun.dele(path);
```

### 5、能不能在 java 里调用 faas 文件?

能。可以使用多种不同的接口：

```java
//调用并返回结果
Object rst = JtRun.call("/faas/demo.js", ctx);

//执行
JtRun.exec("/faas/demo.js", ctx);
```

示例，在定时任务里调用 faas 文件：

```java
@Scheduled(fixedRate = 1000 * 3)
public class Job1 implements Runnable {
    @Override
    public void run() {
        JtRun.exec("/faas/demo_job.js");
    }
}
```

示例，在控制器里调用 faas 文件：


```java
@Controller
public class Job1  {
    @Mapping("/hello")
    public Object hello() {
        return JtRun.call("/faas/demo.js", ctx);
    }
}
```