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 Java Discussion :

Ecrire un web service qui fait client serveur JSON et deposer le war sur une machine


Sujet :

Spring Java

  1. #1
    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 Ecrire un web service qui fait client serveur JSON et deposer le war sur une machine
    Salut,

    je dois ecrire je fais du spring boot jpa et je dois ecrire un web service(RestController) appelé tataWS installé sur une machine virtuelle Mqui recupère des données sur une machine virtuelle(M1) et qui ensuite sera appelé par un autre web service totoWS installé sur la machine virtuelle M2.

    Voir capture d'écran. P2 et P1 sont des port d'écoutes.

    Comment pourrais je m'y prendre. Y a t il un tuto qui peux m'expliquer cela. (Comment pourrais je un rest client java json et un serveur client java json) .Sachant qu'il ya des certifcations à gérer dans mon code, l'ouverture et la fermeture des connexions.

    Quelqu'un a une idée ????

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pour la partie serveur en spring boot, il n'y a pas bien compliqué: il faut ajouter les dépendance spring mvc, créer un RESTController (@RestController & @RequestMapping sur ta classe) et avoir ta méthode de service qui retourne un ResponseEntity<Objet de ton cru> en réponse. Sprign est bien foutu et sérialisera ça en json ou xml souvant ce que lui a demandé le client.
    Un exemple ici
    http://websystique.com/spring-boot/s...t-api-example/

    Pour la partie client, spring te fourni un outil appelé restTemplate qui permet de faire les operations simple
    un exemple ici
    https://spring.io/guides/gs/consuming-rest/


    Enfin; pour ce qui est de la certification, sans savoir de quelles certifications tu parle, difficile de t'aider.

  3. #3
    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
    Salut tchize,

    merci pour ta réponse , cela va m'aider à démarrer. j'espère que tu m'as bien compris.

    J'ai une application spring boot qui tourne sur la machine virtuelle M1 et qui stocke le crud dans la base de donnée sql server 2017 installé sur la même virtuelle. Ce que je vais faire :

    1- Les données qui sont stockés dans la base de donnée sql server 2017 notamment au niveau de la table Employe (son nom, son matricule, son niveauHierarchique), je dois créer un web servicetataWS restFull qui les recupère la liste des employes avec ces trois infos et cette liste une fois recupère mon webservice rest doit l'exposer pour être consommé par un autre web servicetotoWS.Je peux modifier un employé , le supprimer ou l'ajouter donc un crud.

    2- Au niveau de certificat de connexion, au fait , je voulais simplement demander comment gérer la connection à ces machines vu que je dois utiliser java.net pour gérer une connection qui prend en paramètre un ticket.

    3- une fois mon webServices tataWSréalisé , peux tu m'expliquer comment le deployer sur la machine virtuelle sur tomcat afin qu'une fois qu'on l'appelle, il puisse récuperer la liste et l'envoyer au webService totoWS

  4. #4
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut
    Citation Envoyé par lnquaidorsay Voir le message
    1- Les données qui sont stockés dans la base de donnée sql server 2017 notamment au niveau de la table Employe (son nom, son matricule, son niveauHierarchique), je dois créer un web servicetataWS restFull qui les recupère la liste des employes avec ces trois infos et cette liste une fois recupère mon webservice rest doit l'exposer pour être consommé par un autre web servicetotoWS.Je peux modifier un employé , le supprimer ou l'ajouter donc un crud.
    Si tes données sont dans un BDD et que tu veux l'exposer en REST, je te conseille spring data REST.
    Tu as juste besoin de créer une interface CRUD et spring te fera un jolie service REST
    https://spring.io/guides/gs/accessing-data-rest/

    Pour accéder à ce service REST, regarde du RestTemplate, il peut te simplifier la vie grandement.

  5. #5
    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
    Merci bilgetz,
    Au fait normalement après avoir compris le besoin, je dois créer un web services qui sera appelé par un autre service qui lui fournira un liste de json employé que je devrais ensuite stocke en base de données et répondre au webservices qui m'a appelé et passer le json que j'ai bien inseré tout en base.
    Comment devrais m'yprendre avec le HttpStatus pour signaler que tout s'est bien passé ou pas

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut
    Code fait avec la méthode RACHE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    @Controller
    public class HealthController {
     
       @Autowired
       private RestOperations restOperations;
     
       @Autowired
      private EntiteDao crud;
     
        @RequestMapping("/mon_endpoint")
        @ResponseBody
        public ResponseEntity<MonEntiteDeReponse> monEndpoint(final HttpServletRequest request) {
     
           MonEntiteDeReponse json = new MonEntiteDeReponse();
           MonMappingDeRetour retour = null;
     
           //j'interroge mon 1er webservice
           // ca me retourne une entite que j'ai creer qui correspond au json de retour
           try {
            retour = restOperations.getForObject("https://mon_webservice_que_j_interroge.com/ws", MonMappingDeRetour.class);
     
        } catch(RestClientException e) {
            //une erreur, je peut mettre un status code connue !
           return new ResponseEntity<>(json,HttpStatus.SC_BAD_REQUEST);
         }
     
          // je sauvegarde
          crud.saveAll(retour.getEntite());
     
         //ma reponse avec un status code OK
            return new ResponseEntity<>(json,HttpStatus.OK);
        }
     
    }
    Tu peut aussi faire des code retour avec des exception personnalisé:
    http://www.baeldung.com/spring-mvc-c...tp-status-code

  7. #7
    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
    Encore merci bilgetz,

    j'ai encore besoin d'un petit eclaircissement du code au niveau de la recup de mes donnees,

    J'ai créer mes controleurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    //Mon controleur
    @RestController
    @RequestMapping("/api")
    @CrossOrigin("*")
    public class EmployeControleur {
     
    	@Autowired 
    	private EmployeMetier employeMetier;
     
            //Ajout d'un employe
    	@PostMapping("/Employe")
    	public ResponseEntity<Employe> ajouterEmploye(@RequestBody Employe emp) {
    		return employeMetier.ajouterEmploye(emp);
    	}
     
    }
     
    @Entity
    @EntityListeners(AuditingEntityListener.class)
    @JsonIgnoreProperties({"handler", "hibernateLazyInitializer"})
    public class Employe implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Integer id;
     
           public enum STATUT_EMPLOYE {
            CADRES("Cadres", 0),							// Statut Cadres
            NONCADRES("NONCADRES", 1),						// Statut Non cadres
     
            // STATUT_EMPLOYE
    		private final String key;
    		private final Integer value;
     
    		// Constructor
    		STATUT_EMPLOYE(String key, Integer value) {
    			this.key = key;
    			this.value = value;
    		}
     
    		public String getKey() {
    			return key;
    		}
     
    		public Integer getValue() {
    			return value;
    		}
     
        }
     
    	private String numeroEmploye;
    	private LocalDate dateEntree;
     
    	@Embedded
    	@AttributeOverrides({
    		@AttributeOverride(name = "voie", column = @Column(name = "voie")),
    		@AttributeOverride(name = "codePostale", column = @Column(name = "code_postale")),
    		@AttributeOverride(name = "ville", column = @Column(name = "ville"))
    	})
    	private Adresse adresse;
     
     
    	// Constructor
    	public Employe() {
    		super();
    	}
     
    	// Constructor
    	public Employe(String numeroEmploye,
    			Adresse adresse,
    			STATUT_EMPLOYE statutEmploye,
                            LocalDate local
    			String mail) {
    		super();
    		this.adresse= adresse;
    		this.numeroEmploye= numeroEmploye;
    		this.statutEmploye= statutEmploye;
    	}
     
    	// getters et setters
             ...
     
    }
    J'ai créé mon controleur qui sera appelé et on lui passera une liste d'objet employe en json dont le format est donnée en bas.

    J'ai créé un dto EmployeTraitement qui a la forme de la liste d'objets qui me sera passé via le post.

    Mes soucis :

    1- savoir comme recupérer l'enumeration statutEmploye qui est envoyé sous forme d'un string '0' ou '1' et le faire correspondre avec la valeur string "Cadres" ou "Non cadres" avec mon entité Employe .

    J'ai essayé un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EmployeTraitement emp = new EmployeTraitement();
    STATUT_EMPLOYE statut = STATUT_EMPLOYE.valueOf(emp .getEmploye().getStatut().getKey());

    2-Comment appeler ma liste json ici via le contrôleur ajouterEmployeTraiter et parcourir chaque element employe afin d'appeler le controleur ajouterEmploye pour le sauvegarder en base.

    Voici ma liste JSON

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    [
    	{
    			"numeroEmploye" : "1457896",                
    			"statutEmploye" : '0',
    			"dateEntree" : "2001/06/01",
    			"credits" : [
    				{
    					"type" : 1,    
    					"quantite" : 250
    				},
    				{
    					"type" : 2,
    					"quantite" : 250
    				},
    				{
    					"type" : 3,
    					"quantite" : 250
    				},
    				{
    					"type" : 4,
    					"quantite" : 100
    				}
    			],
    			"adresse" : {
    				"numeroEmploye" : "1457896",
    				"addresse" : "42 Allée du Frères Charles",
    				"codePostal" : "31100",
    				"ville": "Toulouse",
    				"siren" : ""
    			}
       },
     
       {
    			"numeroEmploye" : "25487AFE",                
    			"statutEmploye" : '1',
    			"dateEntree" : "2003/04/18",
    			"credits" : [
    				{
    					"type" : 1,    
    					"quantite" : 250
    				},
    				{
    					"type" : 2,
    					"quantite" : 250
    				},
    				{
    					"type" : 3,
    					"quantite" : 250
    				},
    				{
    					"type" : 4,
    					"quantite" : 100
    				}
    			],
    			"adresse" : {
    				"numeroEmploye" : "25487AFE",
    				"addresse" : "12 avenue de la Lorraine",
    				"codePostal" : "31100",
    				"ville": "Toulouse",
    				"siren" : ""
    			}
       }
    ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Autowired
    	private EmployeTraitementMetier  employeTraitementMetier  ;
     
    	@PostMapping("/Employes")
    	public ResponseEntity<EmployeTraitement> ajouterEmployeTraiter(@RequestBody List<EmployeTraitement> employeTraitement) {
    		return employeTraitementMetier  .ajouterEmployeTraitement (commandeClientPortailCap);
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class EmployeTraitement{
     
    	private EmployeDto employe;
    	private AdresseDto adresse;
    	private List<CreditsDto> credits;
         // constructeurs
     
        // getters et setters
     
     
    }

  8. #8
    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
    Salut les amis,

    finalement j'ai trouver en créant un dto qui mappe mon fichier json et mon contrôleur qui parcoure les elements et le sauvegarde dans la base de données.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. web service dotnet et client java
    Par sydius dans le forum Services Web
    Réponses: 2
    Dernier message: 25/06/2008, 10h33
  2. service Windows en client serveur TCP
    Par Dr_shaman dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/06/2008, 09h07
  3. Web Service qui génère un Fichier XML
    Par Amir83 dans le forum Services Web
    Réponses: 8
    Dernier message: 29/05/2008, 13h32
  4. Web Services - Problème de communication serveur/client
    Par vern's dans le forum Web & réseau
    Réponses: 9
    Dernier message: 27/08/2007, 10h06

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