: writing_hand_tone1: Zum Starten ist Java 8 oder höher erforderlich. Wenn Sie "java -jar ROOT.war --port = 9000" setzen, wird es auf Port 9000 gestartet. td> tr>
Durch Hinzufügen der unten gezeigten Java-Option können Sie Protokolle ausgeben, debuggen und mit JMX überwachen. 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-10-19 16:36:01.065 INFO 5304 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)
2017-10-19 16:36:01.075 INFO 5304 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
2017-10-19 16:36:01.242 INFO 5304 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-10-19 16:36:01.249 INFO 5304 --- [ main] o.t.e.Easybuggy4ktApplicationKt : Started Easybuggy4ktApplicationKt in 37.355 seconds (JVM running for 38.916)
Wenn Sie http: // localhost: 8080 besuchen, wird die Hauptseite angezeigt.
Der Start ist etwas langsam (ca. 15 Sekunden. EasyBuggy startet in 3 Sekunden ...)
Andere Startmethoden als die oben genannten
Sie können es auch mit git clone und gradle bootRun starten.
$ git clone https://github.com/k-tamura/easybuggy4kt
$ cd easybuggy4kt
$ gradle bootRun
`server.port = $ {port: 8080}` Zeile in `src / main / resources / application.properties` wird in` server.port = 9000` geändert Dann startet es an Port 9000. td> tr>
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" und "Easy Buggy Boot" besteht der Zweck darin, das Verständnis verschiedener Hindernisse zu reproduzieren, zu analysieren und zu vertiefen. Der Grund, warum ich es in Kotlin neu implementiert habe, war, dass ich Folgendes wissen wollte:
――Ist es möglich, Schwachstellen und Ressourcenlecks in mit Kotlin implementierten Apps zu erstellen?
--Was ist erforderlich, um eine von Java implementierte App in Kotlin erneut zu implementieren?
- Verbessert Kotlin die Lesbarkeit durch die Neuimplementierung von Java-implementierten Apps?
Demo
Das Folgende ist eine Demo des Zugriffs auf die Seite, auf der der Speicherverlust häufig auftritt, und des Beobachtens des Status des Speicherverlusts.
Unterschiede in der Konfiguration
Die Hauptunterschiede in den Konfigurationen von "EasyBuggy", "EasyBuggy Boot" und "EasyBuggy Bootlin" sind wie folgt.
Unterschied |
EasyBuggy |
EasyBuggy Boot |
EasyBuggy Bootlin |
Sprache |
Java |
Java |
Kotlin |
Basistechnologie |
Servlet 3.0.1 |
Spring Boot 1.5.6 (Servlet 3.0.1) |
Spring Boot 1.5.7 (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) |
Thymeleaf 2.1.5 (Einige JSP 2.3 + JSTL 1.2) |
Servlet-Behälter |
Tomcat 7.0.37 |
Tomcat 8.5.16 |
Tomcat 8.5.20 |
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) |
Spring JDBC 4.3.11 / Derby 10.13.1.1 |
LDAP-Client/Server |
Apache DS Client API 1.0.0 / Server 1.5.5 |
Spring LDAP 2.3.1 / unboundid-ldapsdk 3.2.1 |
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) |
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 |
Spring Boot Developer Tools 1.5.7 |
Werkzeug erstellen |
Maven |
Maven |
Gradle |
Java |
Unterstützt Java 6 und höher |
Unterstützt Java 7 und höher |
Unterstützt Java 8 und höher |
Wie zu bauen
Mit dem folgenden Befehl können Sie eine ausführbare und bereitstellbare War-Datei erstellen:
$ gradle clean build
Entwicklungsmethode
Für die Entwicklung von EasyBuggy Bootlin verwenden wir IntelliJ IDEA von JetBrains, das Kotlin entwickelt hat. Ich habe IntelliJ gegenüber STS gewählt, weil es nützliche Funktionen wie das Konvertieren von Java-Programmen in Kotlin-Programme bietet. Dank IntelliJ konnte ich diese App in relativ kurzer Zeit entwickeln.
Um die Entwicklung zu beschleunigen, starten Sie EasyBuggy Bootlin mit "gradle bootRun", während Sie kontinuierlich mit "gradle build --continuous" erstellen. Wenn Sie mit dieser Methode den Quellcode ändern, lädt Spring Boot DevTools ihn automatisch neu, um die Änderung widerzuspiegeln.
| |