Подтвердить что ты не робот

Как развернуть искровое Java-приложение?

Я использовал искроберическую инфраструктуру для создания webapp, но я не знаю, как развернуть этот webapp. Извините, если это очень просто, но я новичок в искробезопасности, и я не могу найти какой-либо документ, который поможет мне развернуть искру webapp.

  • Как развернуть искровое webapp автономное
  • Как создать искру webapp (в военный файл или такой файл) и развернуть с веб-сервером (причал или Tomcat).
4b9b3361

Ответ 1

Сначала вам нужно создать обычный Java-проект, который может быть встроен в .war файл (в Eclipse это будет динамический веб-проект)

Искная документация по этой ссылке описывает, что нужно добавить в ваш проект web.xml файл. http://sparkjava.com/documentation.html#other-webserver

значение параметра, указанное в документации в фильтре, должно указывать на класс, в котором вы определили свои маршруты.

Кроме того, весь код, который ранее был в main(), нужно перенести в init().

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

    });

Кроме того, для того, чтобы я мог развернуть его в JBoss, мне пришлось включать только искровые библиотеки, а не библиотеки Jetty. Как только это будет сделано, вы сможете построить войну и развернуть ее на своем сервере так же, как и любой другой Java-проект.

Ответ 2

Здесь вы найдете информацию о развертывании: http://sparkjava.com/documentation.html#embedded-web-server

Кулак всех, установите параметры фильтра для 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>

Application класс должен реализовывать интерфейс spark.servlet.SparkApplication и должен инициализировать маршруты в методе init().

Этот выглядит как (в 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 и .

Ответ 3

Для автономного сценария вы можете просто использовать Gradle (или Maven) для создания жира (что означает все зависимости, включая встроенный Jetty server), исполняемый файл jar. Вот простой файл build.gradle, который делает именно это:

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. Это создаст файл app.jar в вашей папке build/libs, а затем запустится:

java -jar build/libs/app.jar

Если вы хотите быть в курсе последних событий, то вам нужно использовать Docker для упаковки JRE и приложения 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

Конечно, если вы хотите использовать образ Docker на удаленном веб-сервере, вам нужно нажать его на Docker Hub или на частную docker repository и используйте docker pull, чтобы вытащить его на ваш сервер, прежде чем запускать его.