it-swarm.com.de

So stellen Sie eine Spark-Java-Web-App bereit

Ich habe das Spark-Web-Framework zum Erstellen einer Webapp verwendet, weiß jedoch nicht, wie diese Webapp implementiert werden soll. Es tut mir leid, wenn dies sehr einfach ist, aber ich bin neu in Spark-Framework und ich kann kein Dokument finden, das mich bei der Bereitstellung einer Spark-Web-App unterstützt:

  • So stellen Sie ein Spark-Webapp-Standalone bereit
  • So erstellen Sie eine Spark-Web-App (für eine War-Datei oder eine solche Datei) und stellen sie mit einem Webserver (Jetty oder Tomcat) bereit.
17
MichaelP

Sie müssen zunächst ein reguläres Java-Projekt erstellen, das in eine WAR-Datei integriert werden kann (in Eclipse wäre dies ein dynamisches Webprojekt).

Die Funken-Dokumentation unter diesem Link beschreibt, was Ihrer web.xml-Datei für Projekte hinzugefügt werden muss. http://sparkjava.com/documentation.html#other-webserver

der in der Dokumentation des Parameters angegebene Parameterwert muss auf die Klasse verweisen, in der Sie Ihre Routen definiert haben.

Darüber hinaus muss der gesamte Code, der zuvor in main () war, nach init () verschoben werden.

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

    });

Damit ich es für JBoss bereitstellen konnte, musste ich nur die Spark-Bibliotheken und nicht die Jetty-Bibliotheken einbeziehen. Sobald dies geschehen ist, sollten Sie in der Lage sein, den Krieg zu erstellen und auf Ihrem Server auf dieselbe Weise bereitzustellen wie jedes andere Java-Projekt.

15
dMcNavish

Hier finden Sie Informationen zu deploy: http://sparkjava.com/documentation.html#embedded-web-server

Zuerst alle Filteroptionen für web.xml config einstellen:

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

Die Application-Klasse sollte das Interface spark.servlet.SparkApplication implementieren und die Routen in der init()-Methode initialisieren.

Dieses sieht so aus (in Java SE 8 können Sie Lambda Expression für den Router verwenden.):

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

Die App mit dieser Konfiguration funktioniert gut auf den Servern Tomcat und glassfish.

7
saaaaaaaaasha

Für das Standalone-Szenario können Sie einfach mit Gradle (oder Maven) eine ausführbare JAR-Datei (dh alle Abhängigkeiten einschließlich eines eingebetteten Jetty-Servers) erstellen. Hier ist eine einfache build.gradle-Datei, die genau das macht:

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

Erstellen Sie Ihre Anwendung in der Befehlszeile über gradle build. Dadurch wird eine app.jar-Datei in Ihrem build/libs-Ordner erstellt. Führen Sie dann einfach Folgendes aus:

Java -jar build/libs/app.jar

Wenn Sie wirklich auf dem neuesten Stand sein wollen :), müssen Sie Docker verwenden, um Ihre JRE- und Anwendungs-JAR-Pakete zu packen. Sie sind also nicht auf den auf dem Server installierten Software-Stack angewiesen. Dazu können wir eine Dockerfile verwenden:

FROM Java:8

ADD build/libs/app.jar /

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

Erstellen Sie das Docker-Image und führen Sie es aus, z.

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

Wenn Sie das Docker-Image auf einem Remote-Webserver verwenden möchten, müssen Sie es natürlich in Docker Hub oder in ein privates Docker-Repository verschieben und es mit docker pull auf den Server ziehen, bevor Sie es ausführen.

2
DevNG

1) Klonen Sie dieses Repo: https://github.com/simplesteph/ec2-masterclass-sampleapp

2) Navigieren Sie zum Projektverzeichnis pom.xml

3) mvn sauber installieren

4) gehe zum Zielordner

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

6) Navigieren Sie im Browser zu http: // localhost: 4567

0
Gene