2012-04-11 19 views
1

私はいくつかのクラスを持つjavaプログラムを持っています。 3つのメソッドがAを入力し、Bを出力します。これらのメソッドをWebサービスとして利用できるようにして、http://test.com/method?input=Aのようなものを尋ねて結果Bを返します。私は既存のコードを書き直したくありません。 JAVAのWebサービスフレームワークのような、私がこれらの3つのメソッドのためのWebサービスインタフェースを作成できるようなものがありますか?最も簡単な方法は何ですか?以下はどのように実装できますか?

私はダイナミックプロジェクト、JAVA EE、Glassfishな​​どの私の研究の間に多くの頭字語や他のものに遭遇しました...私の要件を実装することができますか?ありがとう!

答えて

0

を - Glassfishのはその一例です。基本的に、アプリケーションはWebリクエストを受け取るように構築されていないため、何らかのコンテナ(Tomcat http://en.wikipedia.org/wiki/Web_containerなどのサーブレットコンテナ)が必要です。

"restlet"は、あなたのニーズに合った小さなサーブレットコンテナだと思います。

チェックアウト:http://www.restlet.org/

+0

私はrestletを使用してしまった。ありがとうございました。 – user1066429

0

私が見つけた迅速なJavaサービスを行う最も簡単な方法はRestletです。

チュートリアルを使用して、文字通り最初から20分のようにウェブサーバーを稼働させることができます。下のRestletはスケルトンフレームワークとしてすぐに使えるはずです。もちろんString b = ...の呼び出しを置き換えて、自分のライブラリに置き換えます。

public class Main extends Application { 

    public static void main(String[] args) { 
     Main main = new Main(); 
     main.start(); 
    } 

    private void start() { 
     Component c = new Component(); 
     c.getServers().add(Protocol.HTTP, 80); 
     Application app = new Main(); 
     c.getDefaultHost().attach(app); 
     c.start(); 
    } 

    public Restlet createInboundRoot() { 
     Router router = new Router(getContext()); 
     router.attach("/method/{input}", new Restlet(getContext()) { 
      public void handle(Request request, Response response) { 
       String a = request.getAttributes().get("input").toString(); 
       String b = MyLibraries.compute(a); 
       response.setEntity(b, MediaType.TEXT_HTML); 
      } 
     }); 
     return router; 
    } 

} 
0

は、Java EE 6サーバ上で実行している場合は、JAX-RSを使用することができます:あなたはおそらく、Webフレームワークのいくつかの並べ替えが必要になりますhttp://docs.oracle.com/javaee/6/tutorial/doc/gilik.html

+0

ご回答ありがとうございます。私が理解できないことは、複数のクラスで作られたJavaプログラムがあると言うことです。私はメインクラスのmainメソッドを持っていて、データでハッシュテーブルを初期化し、グラフをロードし、クワッドツリーを構築します。今私は、メモリにロードされたロードされたクォッドツリー、グラフ、およびハッシュテーブルを使用するWebサービス経由でインタフェースする必要がある3つのメソッドを持っています。クライアント間でこのようにデータを共有できますか? – user1066429

+0

データはサーバーに残ります。この場合のクライアントは、コードに実際に触れることはなく、リンクされたメディア(css、js、画像など)でHTML応答のみを受け取るエンドユーザーです。したがって、データを表現するビューを作成しなければならず、ビューはアプリケーションの他の部分の仕方に気を付けるべきではありません。かなり一般的なことの1つは、データをJSONとして提供し、データで楽しいことを行うためにjavascript(あなたが利用できる唯一のクライアントサイド処理)を使用することです。また、使用しているWebフレームワークに合わせて、「メイン」機能を書き直さなければならないかもしれないと思います。 – Kasapo

+0

また、各クライアントはおそらくあなたのアプリケーションの別のインスタンスを呼び出すでしょう - Webフレームワークは通常、これをより効率的にする方法を持っています(例えば、クラス定義を再定義せずに別々のインスタンスを作成する)ディスクIOを同じファイルにしているか、メソッドがスレッドセーフではない/マルチプロセスセーフである(Webサーバーの設定に応じて) – Kasapo

関連する問題