[Java] Déployer une application Web créée avec Eclipse + Maven + Ontology avec Heroku

introduction

Résumer le processus de déploiement d'une application Web créée avec Eclipse + Maven + Ontology sur Heroku Concernant le déploiement d'Heroku, je me suis référé au site suivant

Quatre choses sur lesquelles les débutants Heroku sont tombés lors du déploiement d'applications Web créées en Java avec l'intégration GitHub

Veuillez noter que cette méthode n'est qu'un exemple.

Le code source est ci-dessous https://github.com/YasufumiNakama/heroku-java-practice

Contenu

Créer une application Web avec Eclipse + Maven + Ontology

Créer un projet Maven

Je vais omettre l'installation d'Eclipse, etc. Sélectionnez d'abord le projet Maven d'Eclipse スクリーンショット 0031-08-09 2.09.19.png Entrez l'ID de groupe et l'ID d'artefact スクリーンショット 0031-08-09 3.41.20.png Ensuite, le répertoire est configuré comme suit, alors écrivons le code à partir d'ici スクリーンショット 0031-08-09 3.43.11.png

Préparation des ressources

Cette fois, comme ressources, j'utiliserai un fichier de chouette qui décrit l'ontologie (ramen) (car il y en avait une qui était déjà créée et c'était simple et facile). スクリーンショット 0031-08-09 2.34.00.png À titre d'exemple simple, essayons de récupérer une sous-classe de la classe "ramen" en lançant une requête et en la sortant en html (c'était vraiment intéressant de récupérer quelque chose pour l'entrée de l'utilisateur) Cependant, puisque le but est de le déployer sur Heroku, je vais l'ignorer)

Préparation de pom.xml

Puisque les ressources sont échangées en utilisant l'ontologie, jena, jersey et gson sont utilisés comme \ <dépendances > en plus de junit utilisé pour le test.

En outre, \ <build > est officiellement expliqué, donc à partir de ici Utilisez le code tel quel Consultez le code source pour plus de détails, car nous avons apporté d'autres modifications.

Préparation de web.xml

Créez src / main / webapp / WEB-INF / web.xml et définissez le jersey Les détails sont selon le code source

code source java

Depuis que j'ai défini l'ID de groupe sur com.heroku-java-practice, j'écrirai le code source java sous src / main / java / com / heroku_java_practice (le test est sous src / test / java / heroku_java_practice) Tout d'abord, j'ai écrit un programme appelé ramen.java qui interroge et récupère les sous-classes de la classe "ramen" à partir d'un fichier owl qui décrit l'ontologie (ramen) comme des ressources.

ramen.java


package com.heroku_java_practice;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.*;
import com.hp.hpl.jena.query.*;

public class ramen {
	
	public static String path = new File(".").getAbsoluteFile().getParent();
	public static String Resources = path + "/src/main/resources/";

    public static HashSet<String> get_ramen() throws FileNotFoundException {
        //Lire le fichier chouette
        Model model = FileManager.get().loadModel(Resources + "owl/ramen.owl");
        // query
        String queryString = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" +
        		             "SELECT ?y\n" +
                			 "WHERE{\n" +
                             "?y rdfs:subClassOf <http://www.semanticweb.org/nakamayasufumi/ontologies/2019/5/untitled-ontology-30#ramen>\n" +
                             "}";
        // result
        HashSet<String> result = new HashSet<>();
        //Chargement des requêtes SPARQL
        Query query = QueryFactory.create(queryString);
        //Exécuter la requête SPARQL
        QueryExecution qexec = QueryExecutionFactory.create(query, model);
        try {
            ResultSet results = qexec.execSelect();
            for (; results.hasNext(); ) {
                QuerySolution soln = results.nextSolution();
                Resource y = soln.getResource("y");
                result.add(y.toString().split("#")[y.toString().split("#").length-1]);
            }
        } finally {
            qexec.close();
        }
        return result;
    }
}

Maintenant, vérifions avec test si ramen.java se comporte comme prévu.

RamenTest.java


package heroku_java_practice;

import static org.junit.Assert.*;
import org.junit.Test;

import com.heroku_java_practice.*;

public class RamenTest {
	
	@Test
	public void test() {
		try {
			ramen status = new ramen();
			System.out.println(status.get_ramen());
		} catch(Exception e) {
			e.printStackTrace();
			fail(e.toString());
		}
	}
	
}

Lorsque RamenTest.java a été exécuté dans le test JUnit, le résultat de sortie était le suivant et il a été confirmé qu'il se comportait comme prévu. スクリーンショット 0031-08-09 3.57.28.png Enfin, écrivons main.java pour refléter ce résultat de sortie sur le Web. le maillot est pratique

main.java


package com.heroku_java_practice;

import java.io.FileNotFoundException;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

@Path("webmethods")
public class main {

	@Path("/ramen")
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public String return_ramen() throws FileNotFoundException {
		ramen status = new ramen();
		Gson gson = new GsonBuilder().serializeNulls().create();
		String output = gson.toJson(status.get_ramen());
		return output;
	}

}

Vérifions également le comportement de main.java

RamenTest.java


package heroku_java_practice;

import static org.junit.Assert.*;
import org.junit.Test;

import com.heroku_java_practice.*;

public class RamenTest {
	
	/*
	@Test
	public void test() {
		try {
			ramen status = new ramen();
			System.out.println(status.get_ramen());
		} catch(Exception e) {
			e.printStackTrace();
			fail(e.toString());
		}
	}
	*/
	
	@Test
	public void test() {
		try {
			main status = new main();
			System.out.println(status.return_ramen());
		} catch(Exception e) {
			e.printStackTrace();
			fail(e.toString());
		}
	}
	
}
スクリーンショット 0031-08-09 4.06.25.png Ça sonne bien

HTML et JavaScript

Créez du HTML et du JavaScript sous src / main / webapp /

index.html


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>project-ramen</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="index.js"></script>
</head>
<body>
    <h2>ramen</h2>
    <table id="ramen"></table>
    <hr style="border-style:dashed">
</body>
</html>

index.js


const MethodURI =  "https://heroku-java-practice.herokuapp.com/webapi/webmethods/";

function gebi(id) {
    return document.getElementById(id);
}

window.onload = function(){
	var uri = MethodURI+'ramen';
	$.getJSON(uri,
	    function(data){
            for(var i=0; i<data.length; i++){
	            var table = gebi("ramen");
	            $(table).append("<tr></tr>").find("tr:last").append("<td>"+"・"+data[i]+"</td>")
	        }
        }
	);
}

Avec ce js, vous pouvez organiser la sortie dans un format de tableau À propos, concernant MethodURI, il est préférable de sécuriser le nom de l'application côté Heroku à l'avance avant d'écrire. En ce qui concerne webapi / webmethods /, ce sera celui défini respectivement dans web.xml et main.java.

Déployer sur Heroku

Create App Sécurisez un nom d'application à déployer スクリーンショット 0031-08-09 4.22.02.png

Avant de déployer

Avant le déploiement, certains fichiers sont nécessaires pour le déploiement

Préparons les fichiers ci-dessus

Pousser vers Github

Après avoir ajouté les fichiers ci-dessus, transmettez le code source que vous souhaitez déployer sur Github.

Déployer

Ici, nous allons essayer de déployer depuis Github screencapture-dashboard-heroku-apps-heroku-java-practice-deploy-heroku-git-2019-08-09-04_33_57.png Cliquez sur l'icône Github スクリーンショット 0031-08-09 4.48.35.png C'est OK si vous créez un lien avec le référentiel Github que vous souhaitez déployer スクリーンショット 0031-08-09 4.50.55.png Les déploiements automatiques ou le déploiement manuel feront l'affaire, alors cliquez pour déployer スクリーンショット 0031-08-09 6.16.45.png

Structure de fichier de l'application déployée

Vous pouvez vérifier la structure des fichiers de l'application déployée comme suit.

$ heroku login
$ heroku run bash -a <appName>
$ pwd
/app
$ ls

Référence: [Comment voir les fichiers et la structure des fichiers sur une application Heroku déployée](https://stackoverflow.com/questions/38924458/how-to-see-files-and-file-structure-on-a-deployed-heroku] -app)

en conclusion

Avec ce qui précède, pour le moment, le déploiement de l'application Web créée avec [Java] Eclipse + Maven + Ontologie avec Heroku est terminé. S'il y a autre chose, je peux l'ajouter (2019/8/9)

Recommended Posts

[Java] Déployer une application Web créée avec Eclipse + Maven + Ontology avec Heroku
Déployer des applications Web Java sur Heroku
Déployer un projet Eclipse basé sur Tomcat sur Heroku
Déployez des applications Web Java sur Azure avec maven
[Tutoriel] Télécharger Eclipse → Lancer l'application Web avec Java (Pléiades)
Comment déployer une application Java Servlet simple sur Heroku
Quatre choses sur lesquelles les débutants Heroku sont tombés lors du déploiement d'applications Web créées en Java avec GitHub
Déployez le fichier de guerre sur Heroku
Créer une application Web avec Javalin
Déployer automatiquement des applications Web développées en Java à l’aide de Jenkins [Préparation]
Créez une application Web simple avec Dropwizard
Créer un serveur d'applications Web (Java) sur VPS
Création d'un environnement de développement pour les applications Web Java avec Docker pour Mac Part1
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Spring Boot App Edition]
Volume d'essais pour créer une application Web Java sur Windows Server 2016
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
[LINE BOT] J'ai créé un Ramen BOT avec Java (Maven) + Heroku + Spring Boot (1)
[Java / Eclipse / Servlet / JSP / PostgreSQL] Framework d'application WEB avec fonctions de publication / sauvegarde / édition / mise à jour / suppression de données
[AWS] Comment déployer automatiquement une application Web créée avec Rails 6 sur ECR / ECS à l'aide de CircleCI (1) Préparation [Déploiement de conteneur]
Comment déployer un système réalisé avec Java (démarrage Wicket-Spring) sur le serveur du campus
Dépôt Java d'Eclipse avec Maven: artefact manquant ~
Déployer l'application Spring Boot sur Elastic Beanstalk
[Pour les débutants] Jusqu'à la création d'un environnement de développement d'applications Web utilisant Java sur Mac OS
Soumettre une tâche à AWS Batch avec Java (Eclipse)
[Tutoriel] Télécharger Eclipse → Lancer l'application avec Java (Pléiades)
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Créez une application JAVA WEB et essayez OMC APM
Déployez des applications Java développées localement avec Cloud Toolkit sur des instances Alibaba Cloud ECS
Histoire de créer une application de gestion de tâches avec Swing, Java
J'ai essayé de moderniser une application Java EE avec OpenShift.
Construction d'environnement de développement d'applications Web Java avec VS Code (struts2)
Déployez l'application créée par Spring Boot sur Heroku (public) ①
Comment déployer une application kotlin (java) sur AWS Fargate
Jusqu'à ce que vous créiez une application Web avec Servlet / JSP (Partie 1)
Comment déployer une application Java sur Alibaba Cloud EDAS dans Eclipse
Communication socket avec un navigateur Web utilisant Java et JavaScript ②
Communication socket avec un navigateur Web utilisant Java et JavaScript ①
Java: démarrez WAS avec Docker et déployez votre propre application
Comment déployer l'application Rails sur AWS (résumé de l'article)
AWS Elastic Beanstalk # 1 avec Java à partir de zéro - Création d'un environnement d'application Web Java à l'aide de l'interface de ligne de commande EB-
Comment déployer avec heroku
Essayez gRPC avec Java, Maven
Application Web construite avec docker (1)
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Comparaison du développement d'applications WEB avec Rails et Java Servlet + JSP
Créons une application Web de gestion de livres avec Spring Boot part1
Créons une application Web de gestion de livres avec Spring Boot part3
Créons une application Web de gestion de livres avec Spring Boot part2
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Tomcat App Edition]
[Probablement le plus simple] Développement d'applications WEB avec Apache Tomcat + Java Servlet
[Spring Boot] Précautions lors du développement d'une application Web avec Spring Boot et du placement d'une guerre sur un serveur Tomcat indépendant
Créez un environnement de développement d'applications Web qui utilise Java, MySQL et Redis avec Docker CE pour Windows
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
# 1 [Débutant] Créez une application Web (site Web) avec Eclipse à partir de la connaissance 0. "Construisons un environnement pour créer des applications Web"