Java“存储过程”的想法

时间:2012-08-28 11:19:27

标签: java stored-procedures

我有一个相当“疯狂”的想法,在我的应用程序中有一个“存储过程”工具。基本上,我的应用程序是以数据为中心的,它可以通过某种形式的Restful接口访问数据存储区。

我希望能够以多种方式操作数据(这是JSON字符串),例如

  • 递增/递减
  • 哈希/加密/解密以及各种各样的东西

我的第一个 实现是创建一个将执行这些操作的Java类。典型

但是,我希望能够灵活地进行此类操作。也就是说,我可以添加一个程序来动态操作数据,就像一个 可以选择script,然后处理检索到的数据,然后将其保存回来 再次在数据存储区中。

例如:

http://127.0.0.1:8888/resources?key=somekey&operation=funkyops 

这将导致服务器在内部使用此类密钥获取实体,然后操纵数据并将实体保存回数据存储区。

检索和持久化逻辑可以硬编码,但“存储过程”必须是 存储在数据存储区中作为脚本或类似的东西,然后选择时将 被传递到某种处理块。

以下是我尝试做的具体示例:HashBend.java

关于如何实现这一目标的任何想法?

2 个答案:

答案 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数据,转换回二进制,反序列化并转换为你知道的接口类型。调用操作方法。

我没有尝试过,但我看不出有什么理由不行。我建议的是实施一个签名方案,这样你就可以确定你执行的代码来自你认为它来自哪里。您不希望有人注入恶意代码。