Comment développer une application avec l'API Jersey Java RESTful sur une instance Alibaba Cloud ECS

Ce tutoriel vous montrera comment développer une application à l'aide de ** l'API Jersey Java RESTful ** sur une instance ** Alibaba Cloud Elastic Compute Service **.

Par Aditya, Alibaba Cloud Tech Share Auteur. Tech Share , Un programme d'incitation Alibaba Cloud qui encourage le partage des connaissances techniques et des meilleures pratiques au sein de la communauté cloud.

Avec la propagation de la technologie numérique, la même application devient disponible sur une variété d'appareils, y compris les ordinateurs portables, les téléphones mobiles et les téléviseurs. La plupart des applications en cours de création ou en cours de construction sont à plusieurs niveaux. Dans les applications à plusieurs niveaux, il existe une distinction claire entre ce que chaque type peut accomplir. Cela a du sens d'un point de vue commercial car cela permet d'économiser beaucoup d'argent. Cependant, pour répondre aux différents besoins des mêmes données disponibles dans différentes applications, nous avons besoin d'un emplacement commun où les données sont accessibles avec des règles de sécurité appropriées.

Du point de vue d'un développeur, le besoin croissant de réplication des données entre différents appareils et le changement technologique se produisent très rapidement. Vous ne pouvez pas vous permettre de faire tomber le système entier juste pour une simple mise à niveau pour changer le backend. Nous devons également pouvoir nous adapter aux nouvelles technologies sans les tracas du développement. En tenant compte de tous ces critères, le cadre REST fournit une abstraction claire entre les autres couches de la façon dont différentes technologies peuvent accéder aux données, telles que les technologies mobiles (Android et IOS) et Web JavaScript. Vous pouvez voir qu'il le fera.

Le déploiement de l'API REST sur un serveur sur site est inefficace et prend du temps. Jetez plutôt un œil à la manière de tirer parti d'Alibaba Cloud Elastic Compute Service pour déployer l'API Java REST et exposer le service à Internet. Faisons le. Cependant, avant de déployer l'API dans le cloud, vous devez d'abord créer l'API. Nous verrons ici comment créer une API REST Java basée sur jersey simple et la tester avec des outils.

Création de l'API JAVA REST

REST signifie «transfert d'état de représentation». REST avait pour but de créer un découplage entre le serveur et le client pour conserver les composants réutilisables et leur permettre d'être remplacés à tout moment. Étant donné que REST est sans état, vous pouvez améliorer les performances et l'efficacité en implémentant un cache sur votre serveur.

Créons maintenant une API simple pour obtenir et enregistrer les détails des employés.

Vous trouverez ci-dessous l'outil complet que j'utilise pour le développement.

Eclipse IDE pour les développeurs JAVA EE --Dernier Maven

** Après vous être connecté à Alibaba Cloud Console, sélectionnez Elastic Compute Instance (https://www.alibabacloud.com/en/product/ecs) dans Product. ** **

Créez une instance, de préférence dans la région la plus proche. Suivez les étapes ci-dessous. Pour mon serveur, j'ai sélectionné le modèle "Pay-as-you-go" avec la configuration suivante.

image.png

Je prévois d'utiliser l'image du centre de données Windows 2016 pour ECS Instance. J'ai défini la mise en réseau, la configuration du système et d'autres valeurs par défaut. Cliquez sur Créer une instance pour continuer.

Une fois l'instance créée, elle ressemblera à ceci sur la console.

image.png

Cliquez sur le nom de l'instance ECS et sélectionnez Groupe de sécurité> Configurer la règle> Ajouter une règle de groupe de sécurité. Entrez les informations suivantes:

image.png

Veuillez noter que 8080 est l'endroit où mon tomcat est déployé. Vous devez le remplacer par l'emplacement où se trouve réellement Apache Tomcat.

Connectez l'instance ECS via le protocole RDP et poursuivez le développement à l'aide de la machine virtuelle Windows créée.

Créer une API

Téléchargez et installez le dernier "Eclipse IDE for JAVA EE Developers".

Installez la dernière version du JDK et définissez le chemin d'installation sur "JAVA_HOME" et la variable d'environnement "Path". Vous devez également installer maven. C'est très simple, vous devez télécharger et décompresser la dernière distribution binaire .zip et définir le chemin d'installation dans les variables d'environnement "M2_HOME" et "Path". Pour les besoins de cet article, le code est fourni sous forme de fichier zip. Téléchargez le projet et importez-le dans l'espace de travail eclipse.

Téléchargez le référentiel de code ici: https://alicloud-common.oss-ap-southeast-1.aliyuncs.com/RESTCodeRepo.zip

Importez le code depuis Fichier> Importer et sélectionnez Général dans la boîte de dialogue.

Jetons un œil au code importé. Eclipse a la structure de projet suivante.

image.png

En regardant le contenu du descripteur de déploiement "pom.xml" pour un projet complet, il contient les dépendances du projet.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.aditya.restapi</groupId>
    <artifactId>RESTfulExample</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>RESTfulExample Maven WebApplication</name>
    <url>http://maven.apache.org</url>

    <repositories>
        <repository>
            <id>maven2-repository.java.net</id>
            <name>Java.net Repository for Maven</name>
            <url>http://download.java.net/maven/2/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.8</version>
        </dependency>

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>1.8</version>
        </dependency>
        
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.8</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>RESTfulExample</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Model-version: La version avec laquelle le pom actuel est compatible, avec 4.0.0 pour prendre en charge maven 3.

Artifact Id, packaging, groupID, version, name: ils sont utilisés lors de l'empaquetage et pour décrire le projet lors du déploiement.

Référentiel: utilisé lors de l'empaquetage et décrit le projet lors du déploiement. Cette balise se compose de tous les référentiels extraits par la dépendance. Vous pouvez spécifier plusieurs référentiels sous celui-ci.

Dépendances: cette balise comprend toutes les dépendances nécessaires à votre projet. J'utilise des jars liés au jersey pour l'API, et j'utilise également des jars JUNIT.

Build: la balise build contient des informations complètes sur la manière dont l'application sera empaquetée au format WAR, le nom et la version du plug-in d'assembly maven qui sera utilisée pour l'empaquetage.

Nous avons besoin d'un modèle pour contenir les données que nous recevons et envoyons, nous avons donc créé un modèle Employee.java pour contenir le nom, l'âge, le salaire et l'entreprise.

package com.aditya.model;

public class Employee {

    private String name;
    private String age;
    private int salary;
    private String company;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String getCompany() {
        return company;
    }
    public void setCompany(String company) {
        this.company = company;
    }
    @Override
    public String toString() {
        return "Employee [name=" + name + ", age=" + age + ", salary=" + salary + ", company=" + company + "]";
    }
}

Ce modèle se compose de méthodes getters, setters et toString () pour récupérer, stocker et afficher des informations.

Il se trouve dans le package "com.aditya.rest" de "JSONService.java" qui contient le code complet de l'API REST.

package com.aditya.rest;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.aditya.model.Employee;

@Path("/json/empservice")
public class JSONService {

    @GET
    @Path("/get")
    @Produces(MediaType.APPLICATION_JSON)
    public Employee getEmpDetails() {

        Employee emp = new Employee();
        emp.setName("Aditya");
        emp.setCompany("ABC Corporation");
        emp.setAge("31");
        emp.setSalary(1000);

        return emp;

    }

    @POST
    @Path("/post")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createEmpInJSON(Employee emp) {
        
        String result = "Employee saved : " + emp.toString();
        return Response.status(201).entity(result).build();
        
    }
    
}

Nous avons d'abord la déclaration du paquet et nous remarquons également que toutes les importations et annotations sont importées du pot de jersey.

Le chemin initial mappe la carte et la classe, et la méthode est identifiée par @GET / @POST.

@GET:

Assurez-vous que @GET est mappé à getEmpDetails () qui renvoie des informations sur les données codées en dur. Cela annulera automatiquement le marshall (convertir l'objet JAVA en JSON). C'est l'avantage de Jersey Servlet. Voyons comment.

@POST:

@POST est mappé à createEMPInJSON (), qui reçoit l'objet Marshalled de la demande au servlet Jersey dans l'objet emp. La réponse sera créée avec le résultat au statut 201 (Créé).

Web.xml

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Restful Web Application</display-name>

    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.aditya.rest</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

</web-app>

Il s'agit du descripteur de déploiement d'API. Le nom d'affichage est évident car il se compose du nom de l'application. Il se compose du nom de servlet que nous utilisons et la classe de servlet comprend le nom complet du servlet.

De plus, param-name et param-value spécifient les fonctions requises pour l'application Web.

com.sun.jersey.api.json.POJOMappingFeature offre la possibilité de mapper JSON sur des objets java.

Le mappage de servlet mappe la fonctionnalité de servlet à un modèle d'URL spécifique.

Apache Tomcat 7: Téléchargez le programme d'installation de Windows à partir du lien officiel. https://tomcat.apache.org/download-70.cgi

Exécutez Tomcat7.exe et spécifiez le dossier dans lequel vous souhaitez installer Tomcat7.

Déployer et tester l'API:

image.png

Faites un clic droit sur la section serveur et sélectionnez "Nouveau> Serveur".

image.png

Sélectionnez Serveur Tomcat 7, puis sélectionnez Suivant. image.png

Sélectionnez Parcourir et spécifiez le dossier d'installation de tomcat pour créer le serveur.

Faites un clic droit sur le projet et sélectionnez "Exécuter en tant que"> "Exécuter sur le serveur". Lorsque l'API est déployée, elle sera dans l'état suivant.

Sélectionnez Parcourir et spécifiez le dossier d'installation de tomcat pour créer le serveur.

Faites un clic droit sur le projet et sélectionnez "Exécuter en tant que"> "Exécuter sur le serveur". Lorsque l'API est déployée, elle sera dans l'état suivant.

image.png

Installez le client Insomnia, faites une nouvelle demande et utilisez l'URI suivant:

GET : http://localhost:8080/RESTfulExample/rest/json/empservice/get

POST : http://localhost:8080/RESTfulExample/rest/json/empservice/post

Les réactions suivantes peuvent être observées.

image.png

image.png

Vous pouvez également accéder à la même API en utilisant l'adresse IP publique de votre instance ECS, mais sa modification ne modifie pas l'URL de l'API.

GET - http://:8080/RESTfulExample/rest/json/empservice/get

POST - http://:8080/RESTfulExample/rest/json/empservice/post

Etapes supplémentaires

  1. Dans un environnement de production, vous pouvez économiser de l'argent en utilisant une image de serveur Windows version 1709 qui fournit uniquement un accès par console, mais Instances ECS Vous pouvez réduire beaucoup de logiciels sur ja / product / ecs) et améliorer les performances.

  2. Vous devez également utiliser un équilibreur de charge de serveur pour les API où nous prévoyons d'utiliser plusieurs images ECS et de les mettre à l'échelle.

  3. L'authentification de type OAuth peut être introduite dans l'API pour éviter les abus et accroître la sécurité.

  4. De plus, afin d'améliorer la fonction de sécurité de l'API, Alibaba Cloud DNS et [Anti-DDOS Pro](https: // www. Vous pouvez envisager d'utiliser alibabacloud.com/en/product/ddos-pro).

Recommended Posts

Comment développer une application avec l'API Jersey Java RESTful sur une instance Alibaba Cloud ECS
Déployez des applications Java développées localement avec Cloud Toolkit sur des instances Alibaba Cloud ECS
Intégration continue sur les instances Ubuntu Alibaba Cloud ECS avec Jenkins
Comment installer et utiliser Composer sur une instance ECS sur Ubuntu 16.04
Comment créer une application avec un mécanisme de plug-in [C # et Java]
Installez NextCloud sur CentOS 7 avec Alibaba Cloud ECS
Comment utiliser l'API Java avec des expressions lambda
Comment utiliser LOG Java Producer d'Alibaba Cloud
Déployez des applications Java développées dans l'environnement IntelliJ IDEA sur des instances Alibaba Cloud ECS
Comment installer Ruby sur une instance EC2 d'AWS
Comment pousser une application développée avec Rails vers Github
Comment créer un serveur d'applications sur une instance EC2 d'AWS
Comment déployer une application Java Servlet simple sur Heroku
Initialisation avec une chaîne vide vers une instance de type Java String
Comment spécifier la base de données lors de la création d'une application avec des rails
Comment déployer une application kotlin (java) sur AWS Fargate
Comment créer une application à l'aide de Tensorflow avec Android Studio
Comment développer et enregistrer une application Sota en Java
Comment déployer une application Java sur Alibaba Cloud EDAS dans Eclipse
Comment gérer les instances
Comment exécuter la commande de copie Postgresql avec des informations de colonne sur Java
Comment changer de version Java avec direnv dans le terminal sur Mac
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Comment convertir un tableau de chaînes en un tableau d'objets avec l'API Stream
Déployer une application Node.js sur une instance ECS à l'aide du Cloud Toolkit
Java8 / 9 Beginners: Streaming API addiction points et comment les gérer
Comment recadrer une image avec libGDX
Comment vérifier Java installé sur Mac
Comment compiler Java avec VsCode & Ant
[Java] Résumez comment comparer avec la méthode equals
Étapes pour publier une application sur Heroku
[Explication facile à comprendre! ] Comment utiliser l'instance Java
Comment changer de version de Java sur Mac
Comment déployer un système réalisé avec Java (démarrage Wicket-Spring) sur le serveur du campus
Je crée une application Android et elle est bloquée par des erreurs et comment la résoudre
[Java] Comment tester s'il est nul dans JUnit
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
Déployez des applications Web Java sur Azure avec maven
Comment utiliser le framework Java avec AWS Lambda! ??
Comment créer une API avec GraphQL et Rails
Comment résoudre les problèmes d'expression en Java
[Rails] Comment créer un environnement avec Docker
[Java] Mémo sur la façon d'écrire la source