web-dev-qa-db-fra.com

Comment déployer une application web Java spark?

J'ai utilisé spark web framework pour créer une application Web, mais je ne sais pas comment déployer cette application Web. Je suis désolé si cela est très basique, mais je suis novice dans le cadre de spark et je ne trouve aucun document qui me guide pour déployer une application Web spark.:

  • Comment déployer une application Web spark autonome
  • Comment créer une application Web spark (fichier de guerre ou un fichier de ce type) et la déployer avec un serveur Web (jetée ou Tomcat).
17
MichaelP

Vous devez d’abord créer un projet Java standard pouvant être intégré dans un fichier .war (dans Eclipse, ce serait un projet Web dynamique).

La documentation relative à l'étincelle à ce lien décrit les éléments à ajouter au fichier web.xml de votre projet. http://sparkjava.com/documentation.html#other-webserver

la valeur param répertoriée dans la documentation du filtre doit pointer vers la classe où vous avez défini vos itinéraires.

En outre, tout le code qui se trouvait auparavant dans main () doit être déplacé vers init ().

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

    });

De plus, pour pouvoir le déployer sur JBoss, je devais uniquement inclure les bibliothèques d'étincelles et non les bibliothèques de Jetty. Ceci fait, vous devriez être capable de construire la guerre et de la déployer sur votre serveur de la même manière que n'importe quel autre projet Java.

15
dMcNavish

Vous trouverez ici des informations sur deploy: http://sparkjava.com/documentation.html#embedded-web-server

Tout d'abord, définissez les options de filtrage pour web.xml config:

<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>

La classe Application doit implémenter l'interface spark.servlet.SparkApplication et doit initialiser les routes dans la méthode init().

Celui-ci se présente comme (dans Java SE 8, vous pouvez utiliser Expression Lambda pour routeur.):

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");
        });
    }
}

L'application avec cette configuration fonctionne bien pour les serveurs Tomcat et glassfish.

7
saaaaaaaaasha

Pour le scénario autonome, vous pouvez simplement utiliser Gradle (ou Maven) pour créer de la graisse (signifiant toutes les dépendances, y compris un serveur Jetty intégré), fichier jar exécutable. Voici un simple fichier build.gradle qui fait exactement cela:

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"
}

Construisez votre application sur la ligne de commande via gradle build. Cela créera un fichier app.jar dans votre dossier build/libs, puis exécutez simplement:

Java -jar build/libs/app.jar

Si vous voulez être vraiment à jour :), vous devez utiliser Docker pour empaqueter votre JRE et votre jar d’application. Vous ne dépendez donc pas de la pile logicielle installée sur le serveur. Pour ce faire, nous pouvons utiliser une variable Dockerfile:

FROM Java:8

ADD build/libs/app.jar /

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

Générez l'image de menu fixe et exécutez-la, par exemple:

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

Bien sûr, si vous souhaitez utiliser l'image Docker sur un serveur Web distant, vous devez le transférer dans Docker Hub ou un référentiel de menu fixe privé et utiliser docker pull pour le récupérer sur votre serveur avant de l'exécuter.

2
DevNG

1) Cloner ce référentiel: https://github.com/simplesteph/ec2-masterclass-sampleapp

2) Accédez au répertoire du projet pom.xml.

3) installation propre MVN

4) aller au dossier cible

5) Java -jar ec2-masterclass-sample-app-1.0-jar-with-dependencies.jar

6) Dans le navigateur, accédez à http: // localhost: 4567

0
Gene