Как развернуть искровое Java-приложение?
Я использовал искроберическую инфраструктуру для создания webapp, но я не знаю, как развернуть этот webapp. Извините, если это очень просто, но я новичок в искробезопасности, и я не могу найти какой-либо документ, который поможет мне развернуть искру webapp.
- Как развернуть искровое webapp автономное
- Как создать искру webapp (в военный файл или такой файл) и развернуть с веб-сервером (причал или Tomcat).
Ответы
Ответ 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
, чтобы вытащить его на ваш сервер, прежде чем запускать его.
Ответ 4
1) Клонировать этот репозиторий: https://github.com/simplesteph/ec2-masterclass-sampleapp
2) Перейдите в каталог проекта pom.xml
3) mvn чистой установки
4) перейти в целевую папку
5) Java -jar ec2-masterclass-sample-app-1.0 -jar -with-dependencies.jar
6) В браузере перейдите по адресу http://localhost: 4567