[JAVA] Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen

Überblick

Vorher eingeführt Fehlergefüllte Webanwendung ["EasyBuggy"](https://github.com/k-tamura/easybuggy/blob/master/README Ich habe einen Klon von .jp.md erstellt) basierend auf Spring Boot ("EasyBuggy Boot") ..

Sie können es von hier herunterladen und mit dem folgenden Befehl starten.

java -jar ROOT.war
* Zum Starten ist Java 7 oder höher erforderlich. Wenn Sie "java -jar ROOT.war --port = 9000" setzen, wird es auf Port 9000 gestartet.

Wenn Sie die Java-Option wie unten gezeigt hinzufügen, können Sie Protokolle ausgeben, debuggen und mit JMX überwachen (* Dies ist eine Option für Java 7). Es begrenzt auch die maximale Speichernutzung und macht es anfälliger für Probleme wie 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

Wenn die folgende Meldung angezeigt wird, wurde die Webanwendung gestartet.

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)

Wenn Sie http: // localhost: 8080 besuchen, wird die Hauptseite angezeigt.

Screenshot from 2017-08-27 13-49-32.png

Andere Startmethoden als die oben genannten

Sie können auch mit git clone und mvn clean spring-boot: run booten.

$ git clone https://github.com/k-tamura/easybuggy4sb
$ cd easybuggy4sb
$ mvn clean spring-boot:run
`server.port = $ {port: 8080}` Zeile in `src / main / resources / application.properties` wird in` server.port = 9000` geändert Dann startet es an Port 9000.

Sie können ROOT.war auch in einem Java-Container wie Tomcat 8.5 bereitstellen, und es funktioniert auch.

Nutzung dieser App

Ähnlich wie bei "Easy Buggy" besteht der Zweck darin, das Verständnis verschiedener Hindernisse zu reproduzieren, zu analysieren und zu vertiefen. Der Grund, warum ich etwas mit der gleichen Funktion gemacht habe, ist, dass ich Folgendes wissen wollte (ich persönlich bin interessiert).

  • Ist es einfach, Schwachstellen und Ressourcenlecks in den neuesten Framework-basierten (Spring Boot) Apps zu erstellen? --Was ist erforderlich, um eine Legacy-App auf Spring Boot zu migrieren?
  • Wird die Lesbarkeit durch die Migration älterer Apps auf Spring Boot verbessert? ――Wie unterschiedlich ist die Entwicklungsproduktivität von Spring Boot im Vergleich zu älteren Apps?

Ich werde diese zu einem späteren Zeitpunkt in einem anderen Artikel veröffentlichen. Ich habe es mit meinem persönlichen Interesse gemacht, aber ich denke, es wird für die folgenden Zwecke nützlich sein.

  • Verstehen von Implementierungsbeispielen, die Schwachstellen in Spring Boot-basierten Apps verursachen
  • Referenz bei der Migration von Legacy-Apps zu Spring Boot-basierten Apps

Unterschiede in der Konfiguration

Die Hauptunterschiede zwischen den Konfigurationen "Easy Buggy" und "Easy Buggy Boot" sind folgende.

Unterschied EasyBuggy EasyBuggy Boot
Basistechnologie Servlet 3.0.1 Spring Boot 1.5.6 (Servlet 3.0.1)
Präsentationsfolie ungebraucht(Einige JSP 2.2 + JSTL 1.2) Thymeleaf 2.1.5 (Einige JSP 2.3 + JSTL 1.2)
DB-Client/Server JDBC / Derby 10.8.3.0 Spring JDBC 4.3.9 / Derby 10.12.1.1 (Für Java 7)Oder 10.13.1.1 (Für Java 8)
LDAP-Client/Server 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 eingeführt von Spring Boot Mail 1.5.6 überschreiben)
Entwicklungswerkzeuge Keiner Spring Boot Developer Tools 1.5.6
Java Unterstützt Java 6 und höher Unterstützt Java 7 und höher
  • Spring Security hätte für diese Überprüfung eingeführt werden sollen, wurde aber leider noch nicht durchgeführt ...

Wie zu bauen

Mit dem folgenden Befehl können Sie eine ausführbare und bereitstellbare War-Datei erstellen:

$ mvn clean package

Entwicklungsmethode

Außerdem wird beschrieben, wie Sie mit STS (Spring Tool Suite) den EasyBuggy Boot-Quellcode durchsuchen, entwickeln und debuggen. STS ist eine Eclipse-basierte IDE, die angepasst wurde, um die Entwicklung von Spring-basierten Anwendungen zu vereinfachen.

  1. Laden Sie STS von [dieser Seite] herunter (https://spring.io/tools/sts/all).

  2. git clone EasyBuggy Boot von GitHub.

    $ git clone https://github.com/k-tamura/easybuggy4sb
    $ cd easybuggy4sb
    
  3. Führen Sie den folgenden Befehl aus. Dieser Befehl erstellt die für die STS-Entwicklung erforderlichen Dateien (.project- und .classpath-Dateien). Sie können auch auf den Quellcode der abhängigen Bibliotheken verweisen.

    $ mvn dependency:sources
    $ mvn eclipse:eclipse
    
  4. Starten Sie STS.

  5. Importieren Sie das geklonte Projekt aus dem Paket-Explorer. Wählen Sie "Bestehende Maven-Projekte" und klicken Sie auf "Weiter". Screenshot-Import .png Geben Sie den Pfad zum geklonten Projekt in das Stammverzeichnis ein und klicken Sie auf Fertig stellen. Screenshot-Import Maven Projects .png

  6. Klicken Sie im Paket-Explorer mit der rechten Maustaste auf das Projekt "easybuggy4sb" und wählen Sie "Debuggen als", "Spring Boot App", um EasyBuggy Boot im Debug-Modus zu starten. Screenshot-Spring - easybuggy4sb-src-main-java-org-t246osslab-easybuggy4sb-Easybuggy4sbApplication.java - Spring Tool Suite .png

Stellen Sie außerdem sicher, dass der Quellcode beim Ändern automatisch neu geladen wird, um die Änderung widerzuspiegeln.

Recommended Posts