S2JSONIC

JSONICJSON-RPCをS2対応にしてみたのだが、意外と笑える。

今の仕様では、HotDeploy用に自動登録されたServiceクラスは自動的にJSON-RPCとして公開されるようになっている。例えば、

public class EmployeeService {
    public List<Employee> getEmployeeList(Employee emp) {
        return jdbcManager.from(Employee.class)
                          .eq("id", emp.id)
                          .contains("name", emp.name)
                          .getResultList(); 
    }
}

というようなサービスを書くとそれだけでWebから呼び出せる。

呼び出しは、次のようなJSONをemployee.jsonに向けてPOSTするだけ。

{
    "method": "getEmployeeList",
    "params": [{id: 1, name: "かまやつ"}],
    "id": 245906030
}

paramsに指定したJSON objectは引数のEmployeeクラスに自動変換され、idプロパティとnameプロパティに値がセットされた状態でgetEmployeeListに渡される("getEmployeeList"は"GetEmployeeList"でも"get_employee_list"でも問題ないが、引数の数は一致させる必要がある)。

もちろん戻り値もJSONに自動的に変換されクライアントに返送されます。セキュリティ的にまずそうな気配も濃厚ですが、まぁお遊びということで。