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

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

  • Как развернуть искровое веб-приложение в автономном режиме
  • Как создать искровое веб-приложение (для файла war или такого файла) и развернуть его с помощью веб-сервера (jetty или Tomcat).

person MichaelP    schedule 05.11.2013    source источник


Ответы (4)


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

Документация spark по этой ссылке описывает, что необходимо добавить в файл 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, мне нужно было включить только библиотеки spark, а не библиотеки Jetty. Как только это будет сделано, вы сможете создать войну и развернуть ее на своем сервере так же, как и любой другой проект Java.

person dMcNavish    schedule 06.03.2014
comment
как вы отфильтровываете Jetty от включения в WAR? - person voddan; 18.11.2015

Здесь вы найдете информацию о развертывании: 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().

Это выглядит так (в Java SE 8 вы можете использовать Лямбда-выражение для маршрутизатора.):

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.

person saaaaaaaaasha    schedule 25.10.2016

Для автономного сценария вы можете просто использовать Gradle (или Maven) для создания толстого (то есть имеет все зависимости, включая встроенный Jetty сервер), исполняемый файл 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 pull, чтобы загрузить его на свой сервер перед запуском.

person DevNG    schedule 28.04.2017
comment
Пакет Docker не пришел мне на ум, но он мне нравится! - person Hatem Jaber; 06.01.2018
comment
Будет ли в нем встроен сервер причала? - person Xhark; 14.04.2018