[JAVA] J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
Aperçu
Présenté avant Application Web remplie de bogues ["EasyBuggy"](https://github.com/k-tamura/easybuggy/blob/master/README J'ai fait un clone de .jp.md) basé sur Spring Boot ("EasyBuggy Boot") ..
Vous pouvez le télécharger depuis ici et le démarrer avec la commande suivante.
java -jar ROOT.war
* Java 7 ou supérieur est requis pour démarrer. Si vous définissez `java -jar ROOT.war --port = 9000`, il démarrera sur le port 9000. td> tr>
Si vous ajoutez l'option Java comme indiqué ci-dessous, vous pouvez générer des journaux, déboguer et surveiller avec JMX (* Ceci est une option pour Java 7). Il limite également l'utilisation maximale de la mémoire, ce qui le rend plus sujet à des problèmes tels que OutOfMemoryError.
java -Xmx256m -XX:MaxPermSize=64m -XX:MaxDirectMemorySize=90m -XX:+UseSerialGC -Xloggc:logs/gc.log -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:GCTimeLimit=15 -XX:GCHeapFreeLimit=50 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/ -XX:ErrorFile=logs/hs_err_pid%p.log -agentlib:jdwp=transport=dt_socket,server=y,address=9009,suspend=n -Dderby.stream.error.file=logs/derby.log -Dderby.infolog.append=true -Dderby.language.logStatementText=true -Dderby.locks.deadlockTrace=true -Dderby.locks.monitor=true -Dderby.storage.rowLocking=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7900 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -ea -jar ROOT.war
Lorsque le message suivant s'affiche, l'application Web a été lancée.
2017-08-11 22:05:25.233 INFO 81661 --- [ main] o.t.e.Easybuggy4sbApplication : Started Easybuggy4sbApplication in 8.404 seconds (JVM running for 10.723)
Lorsque vous visitez http: // localhost: 8080, vous verrez la page principale.
Méthodes de démarrage autres que celles ci-dessus
Vous pouvez également démarrer avec git clone et mvn clean spring-boot: run .
$ git clone https://github.com/k-tamura/easybuggy4sb
$ cd easybuggy4sb
$ mvn clean spring-boot:run
`server.port = $ {port: 8080}` ligne dans `src / main / resources / application.properties` est remplacée par` server.port = 9000` Ensuite, il démarrera sur le port 9000. td> tr>
Vous pouvez également déployer ROOT.war dans un conteneur Java tel que Tomcat 8.5 et cela fonctionnera également.
Utilisation de cette application
Semblable à "Easy Buggy", le but est de reproduire, analyser et approfondir la compréhension des différents obstacles. La raison pour laquelle j'ai fait quelque chose avec la même fonction est que je voulais savoir ce qui suit (je suis personnellement intéressé).
- Est-il facile de créer des vulnérabilités et des fuites de ressources dans les dernières applications basées sur le framework (Spring Boot)?
- Que faut-il pour migrer une ancienne application vers Spring Boot?
- La lisibilité sera-t-elle améliorée par la migration des applications héritées vers Spring Boot?
―― Quelle est la différence entre la productivité de développement de Spring Boot et les applications héritées?
Je les publierai dans un autre article à une date ultérieure. Je l'ai fait avec mon intérêt personnel, mais je pense que ce sera utile aux fins suivantes.
- Comprendre les exemples d'implémentation qui créent des vulnérabilités dans les applications basées sur Spring Boot
- Référence lors de la migration d'applications héritées vers des applications basées sur Spring Boot
Différences de configuration
Les principales différences entre les configurations "Easy Buggy" et "Easy Buggy Boot" sont les suivantes.
Différence |
EasyBuggy |
EasyBuggy Boot |
Technologie de base |
Servlet 3.0.1 |
Spring Boot 1.5.6 (Servlet 3.0.1) |
Couche de présentation |
inutilisé(Certains JSP 2.2 + JSTL 1.2) |
Thymeleaf 2.1.5 (Certains JSP 2.3 + JSTL 1.2) |
Client DB/serveur |
JDBC / Derby 10.8.3.0 |
Spring JDBC 4.3.9 / Derby 10.12.1.1 (Pour Java 7), Ou 10.13.1.1 (Pour Java 8) |
Client LDAP/serveur |
Apache DS Client API 1.0.0 / Server 1.5.5 |
Spring LDAP 2.3.1 / unboundid-ldapsdk 3.2.1 |
Email |
JavaMail 1.5.1 |
JavaMail 1.5.1 (Java Mail introduit par Spring Boot Mail 1.5.Remplacer 6) |
Outils de développement |
Aucun |
Spring Boot Developer Tools 1.5.6 |
Java |
Prend en charge Java 6 et supérieur |
Prend en charge Java 7 et supérieur |
- Spring Security aurait dû être introduit pour cette vérification, mais malheureusement cela n'a pas encore été fait ...
Comment construire
Vous pouvez créer un fichier war exécutable et déployable avec la commande suivante:
$ mvn clean package
Méthode de développement
Il décrit également comment utiliser STS (Spring Tool Suite) pour parcourir, développer et déboguer le code source d'EasyBuggy Boot. STS est un IDE basé sur Eclipse, personnalisé pour faciliter le développement d'applications basées sur Spring.
-
Téléchargez STS depuis cette page.
-
git clone EasyBuggy Boot depuis GitHub.
$ git clone https://github.com/k-tamura/easybuggy4sb
$ cd easybuggy4sb
-
Exécutez la commande suivante. Cette commande crée les fichiers nécessaires au développement STS (fichiers .project et .classpath ). Vous pouvez également vous référer au code source des bibliothèques dépendantes.
$ mvn dependency:sources
$ mvn eclipse:eclipse
-
Démarrez STS.
-
Importez le projet cloné à partir de l'Explorateur de packages. Sélectionnez "Projets Maven existants" et cliquez sur "Suivant".
Entrez le chemin d'accès au projet cloné dans le répertoire racine et cliquez sur Terminer.
-
Cliquez avec le bouton droit sur le projet ʻeasybuggy4sb` dans l'Explorateur de packages et sélectionnez Déboguer en tant que, Spring Boot App pour lancer EasyBuggy Boot en mode débogage.
Assurez-vous également que lorsque vous modifiez le code source, il sera automatiquement rechargé pour refléter la modification.
| |