我有一个相当“疯狂”的想法,在我的应用程序中有一个“存储过程”工具。基本上,我的应用程序是以数据为中心的,它可以通过某种形式的Restful接口访问数据存储区。
我希望能够以多种方式操作数据(这是JSON
字符串),例如
我的第一个 实现是创建一个将执行这些操作的Java类。典型
但是,我希望能够灵活地进行此类操作。也就是说,我可以添加一个程序来动态操作数据,就像一个
可以选择script
,然后处理检索到的数据,然后将其保存回来
再次在数据存储区中。
例如:
http://127.0.0.1:8888/resources?key=somekey&operation=funkyops
这将导致服务器在内部使用此类密钥获取实体,然后操纵数据并将实体保存回数据存储区。
检索和持久化逻辑可以硬编码,但“存储过程”必须是 存储在数据存储区中作为脚本或类似的东西,然后选择时将 被传递到某种处理块。
以下是我尝试做的具体示例:HashBend.java
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
您可以使用javascript引擎:请参阅“Java平台的脚本”http://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/
代表:
http://host/resources?key=somekey&operation=return+{newkey:123,data1:"hello"};
答案 1 :(得分:1)
最好的办法是简单地使用脚本语言并通过Java调用解释器。
如果你坚持只使用Java那么可能有办法......
创建一个所有脚本符合的接口,指定操作数据的方法。创建您的特定类,序列化它,然后将其包含在json(可能是base 64编码)中。
当你获得json时,拔出base 64数据,转换回二进制,反序列化并转换为你知道的接口类型。调用操作方法。
我没有尝试过,但我看不出有什么理由不行。我建议的是实施一个签名方案,这样你就可以确定你执行的代码来自你认为它来自哪里。您不希望有人注入恶意代码。