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