IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Tutoriel sur le développement full stack d'une application Web avec Angular 7 et Spring Boot 2


Sujet :

Spring Boot Java

  1. #21
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par olivier252 Voir le message
    Bonjour, et tout d'abord merci beaucoup pour ce tutoriel très bien réalisé au cours duquel j'apprends beaucoup.

    Ayant un profil débutant junior en java/angular, je me suis attelé à ce tutoriel il y a quelques jours. Je rencontre un petit problème que je vais essayer de décrire au mieux :
    En effet, arrivé à la finalisation du back end et au test des web services de l'API Rest, je n'arrive pas à lancer le serveur Tomcat (j'utilise la v.9), j'ai configuré le port en 8082.

    Le problème vient (je suppose) du fait que je n'arrive pas à établir la connexion avec la BDD car je relève un message d'erreur qui jette une DbException avec la mention :
    "Erreur du fichier journal C:/Windows/System32/src/main/resources/database/library-db.trace.db Erreur lors de la création du fichier ""C:/Windows/System32/src""

    D'autre part j'ai une autre exception qui découle de la première du type :
    "org.h2.jdbc.JdbcSQLNonTransientException: Erreur du fichier journal: "C:/Windows/System32/src/main/resources/database/library-db.trace.db"

    Je suppose que j'ai un soucis au niveau de la gestion des ressources de la Database :
    J'ai téléchargé le fichier "library-db.mv.db" dans le dossier database comme indiqué dans l'arborescence du projet, en revanche je n'utilise pas le fichier library-trace.trace.db.
    Je ne sais pas comment me vérifier. Au départ, j'avais tapé tout le code moi-même, et j'ai créé un second projet où j'ai copié-collé les sources sur github et le résultat et le même.

    Vous remerciant

    Bonjour Olivier252,

    Je ne crois pas avoir tout saisi dans vos explications, mais au regard de la stacktrace, le fait d'avoir le chemin C:/Windows/System32/src/main/resources/database/library-db.trace.db montre qu'il y a un problème de configuration. Tu as du faire une manipulation qui force l'application à rechercher ta base de données dans C:/Windows/System32/, ce qui n'est pas du tout cohérent.

    Alors, ce qu'il faut savoir de façon générale, c'est que la base de données utilisée dans cette application exemple est une base de données embarquée. C'est-à-dire, une base régie par une dépendance (en l'occurrence H2) qui fait partir intégrante de ton application. Deux façons de la configurée :
    - soit on la configure pour qu'elle stocke les données en mémoire, c'est-à-dire dans la RAM de ta machine pendant que l'application est en cours d'exécution,
    - soit on la configure pour qu'elle stocke les données dans un fichier de façon plus durable, au délà de l'arrêt de l'appplication. Mais le point important dans ce cas est de savoir que pour une question de portabilité de ton application, il est nécessaire que ce fichier fasse également partir intégrante celle-ci. (Ce cas est celui choisi dans mon article).


    C'est pourquoi tu verras que dans le fichier de configuration application.properties, on a : spring.datasource.url = jdbc:h2:file:./src/main/resources/database/library-db
    Le "." après le ":" est très important. C'est le symbole du répertoire courant qui signale qu'il faut générer la base de données en partant de l'emplacement de l'application.properties jusqu'au répertoire ..../database. Quand tu as fini de faire ceci, c'est la dépendance H2 qui génère ta base de données (library-db.trace.db) pour toi. Cette génération affectera dans les propriétés du fichier résultat son chemin quasi absolu (notamment : /library/src/main/resources/database/library-db.trace.db et non pas C:/Windows/System32/src/main/resources/database/library-db.trace.db).

    Je pense pour ma part qu'il ne faut pas que tu fasses de copier/coller du fichier library-db.trace.db et le déposer n'importe où sur ta machine, comme j'ai cru lire, et espérer que cela fonctionne. Si tu as bien configuré la propriété spring.datasource.url, fait un mvn clean package de ton projet et suit minutieusement l'étape sur le déploiement, ça devrait aller.

    En espérant t'avoir éclairé.

    Cordialement,
    Georges

  2. #22
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour et merci pour ton aide,

    Le problème vient du fait que je ne suis pas encore à l'aise avec Tomcat. Je pense avoir compris en partie mon erreur car je lançais un serveur Tomcat que j'avais spécialement configuré pour l'appli "library" en allant
    dans Windows->preferences->server...
    J'avais omis le fait que spring boot embarque directement un serveur comme c'est précisé dans le pom.xml et dans tes explications d'ailleurs...
    Du coup en lançant l'appli en "run as->spring boot app" directement je n'ai plus de stack d'erreur en sortie console. En revanche, l'url http://localhost:8082/library/swagger-ui.html#/ (port 8080 pour moi) conduit à une page blanche avec une erreur 404
    Nom : Annotation 2020-05-15 112156.jpg
Affichages : 324
Taille : 19,8 Ko

    Je précise que swagger est bien configuré dans mon pom.xml comme ceci :

    Nom : Annotation 2020-05-15 113355.jpg
Affichages : 322
Taille : 17,5 Ko

    D'autre part le fichier "library-db.trace.db" est bien généré mais il indique qu'il ne peut pas supprimer les tables Book, Customer, et Category à cause des clés étrangères qui unissent ces dernières entre elles (comme DarkShyper qui avait remonté cela).
    Quoi qu'il en soit, merci encore pour ta réponse et ce tuto, j'arrive à faire tourner la partie AngularJs et j'ai compris la liaison d'un backend et d'un frontend dans les grandes lignes pour l'instant. Je vais me remettre au travail sur le backend, je devrais trouver à force de persévérance

  3. #23
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Salut Olivier252,

    Bravo pour ta détermination, tu vas y arriver.

    Pour l'url http://localhost:8082/library/swagger-ui.html#/ qui ne fonctionne pas, c'est normal. En fait, cette url est celle qui fonctionnera quand tu auras déployé ton application dans un vrai Tomcat physique installé sur ta machine (pas celui embarqué dans le livrable par Spring Boot) (voir section XV-C).

    Par contre, puisque tu exécutes l'application en t'appuyant sur le Tomcat embarqué, tu as deux solutions :
    - Soit tu ne fais rien et tu recherches ton Swagger sur l'url suivante : http://localhost:8080/swagger-ui.html#/
    - Soit tu ajoutes dans l'application.properties, les propriétés suivantes pour utiliser l'url http://localhost:8082/library/swagger-ui.html#/ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                 server.port=8082
                 server.servlet.context-path=/library

    Bon courage à toi.

    Georges

  4. #24
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Merci beaucoup Georges, cette fois cela fonctionne !

    En revanche tu précises l'url "http://localhost:8082/library/swagger-ui.html#/" dans le chapitre XI "Documenter et tester l'API REST avec Swagger". Je ne sais pas si c'est normal où si il s'agit d'une erreur et c'est sur cette incompréhension que je butais.

    Merci encore pour ton aide précieuse et le partage de ce tuto au contenu pédagogique excellent.

    Olivier

  5. #25
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Merci à toi Olivier pour tes compliments.
    Pour ta remarque sur l'url, je te comprends, mais dans l'esprit du tutoriel les sections contenant les configurations s'enchainent les unes après les autres avec pour but de pouvoir tester le TOUT à la fin (c'est-à-dire, la section consacrée à la démo donc). Cela veut dire naturellement que si tu t'arrêtes à une étape intermédiaire et tu veux faire fonctionner l'application, c'est normal que ça ne marche pas . Ce type de tutoriel est du tout ou rien, si tu passes à la pratique et veux avoir quelque chose de complètement fonctionnel à la fin. Ce qui n'est pas le cas lorsque tu veux juste t'enrichir des connaissances diffusées dans les différentes sections.

    Bonne continuation.

    Georges

  6. #26
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Georges,

    Ok, bien compris ta réponse. Maintenant je vais repasser tout le code point par point pour assimiler certains concepts qui ne sont pas clairs pour moi comme certaines annotations JPA (@embeddable et @EmbeddedId par exemple) ou encore l'implémentation des webservices...
    J'ai vu que tu avais le projet de sorti un tuto sur jenkins et l'intégration continue, sache que je suis preneur car je me rends compte qu'à l'école nous n'avons fait que créer de petits projets, mais la partie "mise en prod" a été très souvent occultée.

    Bien à toi

  7. #27
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Salut Olivier,

    Oui l'article sur l'intégration continue avec Jenkins est dans mon bac à sable avec beaucoup d'autres sujets. Le seul problème c'est le temps. Je ne peux pas te dire aujourd'hui quand est-ce que cet article arrivera.
    Bon courage à toi.

    Cordialement,
    Georges

  8. #28
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Georges,

    Bien sûr, je comprends tout à fait. Le partage que tu as fait est déjà énorme. J'ai cherché des exos similaires, et je n'ai pas trouvé d'équivalent.

    Pour tout t'avouer j'en ai parlé à un entretien d'embauche en présentant les différentes parties du code car je termine tout juste mes études (niv bac+2 analyste programmeur)
    J'ai bien sûr fourni ta source, en précisant que je n'aurais pas pu fournir un tel travail seul.

    Maintenant j'essaie de réaliser un petit logiciel de gestion des stocks par moi-même afin de grossir un peu mon portefeuille de réalisations.

    Bonne continuation

  9. #29
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Je t'en remercie Olivier.
    Bonne chance et bonne continuation à toi. Surtout reste motivé, l'IT est un domaine passionnant.

    Cordialement,
    Georges

  10. #30
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Probleme Frontend
    Merci pour le travail complet.
    Je te felicite pour le travail qui est bien détaillé et bien expliaué srt pour un débutant.
    Mais, je trouve de mal à le compiler.
    Le Backend marche tres bien, j'ai même réusii à le refaire en suivant tes indications.
    Par contre le front end me signale des erreurs de compilations.
    même en compilant avec: ng serve sur Angular ca marche pas

  11. #31
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Aminou81 Voir le message
    Merci pour le travail complet.
    Je te felicite pour le travail qui est bien détaillé et bien expliaué srt pour un débutant.
    Mais, je trouve de mal à le compiler.
    Le Backend marche tres bien, j'ai même réusii à le refaire en suivant tes indications.
    Par contre le front end me signale des erreurs de compilations.
    même en compilant avec: ng serve sur Angular ca marche pas
    Enfin ca marche. Il fallait que je change dans: proxy.conf.json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        "/library/*": {
          "target": "http://localhost:8082",
          "secure": false,
          "changeOrigin": "true",
          "logLevel": "debug",
          "pathRewrite": {"^/library" : "http://localhost:80821"}
        }
    }
    Ainsi ca marche et je ne sais par pouquoi;
    Merci une autre fois.

  12. #32
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Salut Aminou81

    Merci et bravo pour avoir réussi a régler ton problème.

    Georges

  13. #33
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut Error mapping OneToMany or ManyToOne unmapped class
    Bonjour, je reçois cette erreur au niveau de mon mapping


    Error creating bean with name 'ICustomerDao' defined in com.biblio.fr.biblio.repository.ICustomerDao defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaMappingContext' while setting bean property 'mappingContext'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.biblio.fr.biblio.entite.Book.loans[com.biblio.fr.biblio.entite.Loan]


    Et pourtant j'ai bien annoté mes classes d'entité.
    Quelq'un a une idée

  14. #34
    Membre chevronné

    Homme Profil pro
    Ingénieur R&D en informatique
    Inscrit en
    Août 2011
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur R&D en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 313
    Points : 1 855
    Points
    1 855
    Par défaut
    Bonjour lnquaidorsay,

    Je vois que tu reprends la tuto en essayant de construire l'application avec tes packages à toi. C'est très bien, c'est comme cela que l'on apprivoise le truc.
    Cependant pour ton problème, juste deverser la stacktrace ou un bout de stack trace ne suffit pas. Il aurait fallu un petit context aussi.

    Mais vraisemblablement quand je regarde la dernière ligne de ta stack, je mise sur un mauvais mapping au niveau de ton entité Loan (qui est une classe-association !!!). Peut-être as-tu utiliser une autre approche ?

    Cordialement,
    Georges

Discussions similaires

  1. Réponses: 22
    Dernier message: 20/08/2023, 14h41
  2. Réponses: 2
    Dernier message: 05/07/2019, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo