2013-11-05 11 views
17

spark web frameworkを使ってwebappを作成しましたが、このwebappをどのように配備するのか分かりません。これは非常に基本的である場合、私は申し訳ありませんが、私はフレームワークを刺激するために新たなんだと私はスパークWebアプリケーションを展開する方法を私を導い任意のドキュメントを見つけることができません。:spark Java Webアプリケーションを配備する方法は?

  • スパークWebアプリケーションをスタンドアロン
  • を展開する方法
  • spark webappを(warファイルやそのようなファイルに)ビルドし、Webサーバー(jettyやTomcat)でデプロイする方法。

答えて

15

最初(これは動的WebプロジェクトになりEclipseで).warファイルに組み込むことができ、通常のJavaプロジェクトを作成する必要があります

このリンクでスパークドキュメントはに必要なものについて説明しあなたのプロジェクトのweb.xmlファイルに追加することができます。 http://sparkjava.com/documentation.html#other-webserver

フィルタ内のドキュメントに記載されているparam-valueは、ルートを定義したクラスを指す必要があります。

さらに、以前はmain()にあったすべてのコードをinit()に移動する必要がありました。

@Override 
public void init() { 
    get(new Route("/test") { 
     @Override 
     public Object handle(Request request, Response response) { 
      return "response goes here; 
     } 

    }); 

また、私は、JBossにデプロイするために、私は火花ライブラリではなく桟橋ライブラリのみを含める必要がありました。これが完了したら、他のJavaプロジェクトと同じように、戦争を構築してサーバーに展開できるはずです。

+0

JettyをWARに含める方法をどのようにフィルタリングしますか? – voddan

5

ここでは、デプロイについての情報を検索:すべての http://sparkjava.com/documentation.html#embedded-web-server

拳、web.xml設定のために設定されたフィルタオプション:

<web-app> 
    <!-- some options --> 
    <filter> 
    <filter-name>SparkFilter</filter-name> 
    <filter-class>spark.servlet.SparkFilter</filter-class> 
    <init-param> 
     <param-name>applicationClass</param-name> 
     <param-value>your.package.Application</param-value> 
    </init-param> 
    </filter> 

    <filter-mapping> 
    <filter-name>SparkFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 

Applicationクラスがインタフェースspark.servlet.SparkApplicationの実装とでルートを初期化する必要がありますinit()方法。

この1のようにのように見える(Java SEの8にあなたがルータのLambda Expressionを使用することができます。):

package your.package; 

import static spark.Spark.*; 

public class Application implements SparkApplication { 
    @Override 
    public void init() { 
     get("/", (request, response) -> "Hello World"); 

     get("/hello/:name", (request, response) -> { 
      return "Hello: " + request.params(":name"); 
     }); 
    } 
} 

アプリケーションこの構成では、TomcatのGlassFishののサーバーの正常に動作します。

1

Gradle(またはMaven)を使用してfat(作成したJettyサーバーを含むすべての依存関係を意味します)、実行可能なjarファイルを作成できます。

apply plugin: 'java' 
apply plugin: 'application' 

// TODO Change this to your class with your main method 
mainClassName = "my.app.Main" 

defaultTasks 'run' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5' 
    // TODO add more dependencies here... 
} 

// Create a fat executable jar 
jar { 
    manifest { 
     attributes "Main-Class": "$mainClassName" 
    } 

    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    } 

    archiveName "app.jar" 
} 

gradle buildを経由して、コマンドラインで使用するアプリケーションをビルドします。ここではちょうどそれを行う簡単なbuild.gradleファイルです。したがって、あなたではない、

java -jar build/libs/app.jar 

をあなたは本当に、あなたはあなたのJREやアプリケーションのjarファイルをパッケージ化するDockerを使用する必要があります:)最新の状態にしたい場合:これは、単に実行し、あなたのbuild/libsフォルダ内のapp.jarファイルを作成しますサーバーにインストールされているソフトウェアスタックによって異なります。これを行うために、我々はDockerfileを使用することができます。

FROM java:8 

ADD build/libs/app.jar/

EXPOSE 4567 
ENTRYPOINT ["java", "-jar", "app.jar"] 

は例えば、ドッキングウィンドウのイメージを構築し、それを実行します。もちろん

docker build -t myapp:v1 . 
docker run --rm --name myapp -p 4567:4567 myapp:v1 

を使用すると、リモートのWebサーバー上のドッカーの画像を使用したい場合は、あなたをDocker Hubまたはプライベートドッカーのリポジトリにプッシュし、実行する前にサーバーにプルするためにdocker pullを使用する必要があります。

+0

Dockerバンドルは心に浮かぶものではありませんでしたが、私はそれが好きです! –

関連する問題