1

アプリケーションに「ストアドプロシージャ」機能を含めるという、このかなり「クレイジー」なアイデアがあります。基本的に、私のアプリはデータ中心であり、何らかの形式のRestfulインターフェイスを介してデータストアにアクセスできます。

データ(JSON文字列)をさまざまな方法で操作する機能が必要です。

  • インクリメント/デクリメント
  • ハッシュ/暗号化/復号化およびあらゆる種類のもの

私の最初の実装は、これらの操作を実行するJavaクラスを作成することでした。典型的な。

しかし、私はそのような操作を柔軟に行えるようにしたいと思っています。つまり、データをオンザフライで操作する手順を追加できます。つまり、 script選択して取得したデータを処理し、データストアに再度保存する手順を追加できます。

例えば:

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

これにより、サーバーはそのようなキーを使用してエンティティを内部的にフェッチし、データを操作してエンティティをデータストアに保存します。

ロジックの取得と永続化はハードコーディングできますが、「ストアドプロシージャ」はスクリプトなどとしてデータストアに保存する必要があり、選択すると、ある種の処理ブロックに渡されます。

これが私がやろうとしていることの具体例です:HashBend.java

これをどのように達成できるかについてのアイデアはありますか?

4

2 に答える 2

1

javascriptエンジンを使用できます。「Javaプラットフォームのスクリプト」を参照してください。http ://java.sun.com/developer/technicalArticles/J2SE/Desktop/scripting/

例:

http://host/resources?key=somekey&operation=return+{newkey:123,data1:"hello"};
于 2012-08-28T11:25:16.957 に答える
1

最善の策は、スクリプト言語を使用し、Javaを介してインタプリタを呼び出すことです。

Javaのみを使用することを主張する場合は、方法があるかもしれません。

データを操作する方法を指定する、すべてのスクリプトが準拠するインターフェイスを作成します。特定のクラスを作成し、それをシリアル化してから、それをjson(おそらくbase 64でエンコード)に含めます。

jsonを取得したら、base 64データを取り出し、バイナリに変換し直し、逆シリアル化して、既知のインターフェイスタイプにキャストします。操作メソッドを呼び出します。

私はこれを試していませんが、うまくいかない理由はわかりません。私が提案するのは、署名スキームを実装して、実行するコードが自分が思っている場所から来ていることを確認できるようにすることです。誰かが悪意のあるコードを挿入することは望ましくありません。

于 2012-08-28T11:26:13.227 に答える