Vor Jahren hatten wir ein Problem mit langsamer Federkomponente Scans im Standalone-Java-Anwendungen, damit ich in Stackoverflow gefragt: Slow spring component scan . Jahre später bin ich wieder über dieses Problem gestolpert und ich denke, ich habe herausgefunden, warum es langsam ist: Es ist, weil die JAR-Dateien signiert sind. Derzeit haben wir etwa 170 JAR-Dateien in unserer App. Unsere eigene und dritte Partei. Wir unterschreiben sie alle. Normalerweise verwenden wir Webstart und die Leistung für den Komponentenscan ist in Ordnung. Starten unserer App mit einem riesigen Klassenpfad, indem Sie einfach "java -cp mainclass" ausführen, der compountnt Scan dauert Minuten. Wenn ich nur die MANIFEST.MF-Dateien aus allen JAR-Dateien (die nur die Signierungsinformationen enthalten) entfernen und die Anwendung erneut ausführen, ist die Geschwindigkeit schnell wie bei Webstart. So scheint es die Signaturprüfung kostet eine sehr lange Zeit. Ich habe versucht, Signatur Scan in der Java-Konsole zu deaktivieren. Kein Effekt. Immer noch langsam. Gibt es Java-Laufzeitparameter?Federkomponente Scan (@Autowire) in signierter Jar Files langsam
Antwort
Ich stoße zur Zeit auf das gleiche Problem mit einem signierten Uber-Jar. Es hat möglicherweise nichts mit der automatischen Verdrahtung zu tun, sondern mit dem Scannen von Kontextkomponenten, falls Sie dies auch in einer XML-Konfiguration verwenden. Ich habe einen alten Spring-Kern ticket gefunden, der das erwähnt. Das Ticket wurde mit Auflösung geschlossen: nicht behoben ...
Ich habe Komponente Scannen entfernt und ersetzte es mit XML-Bohnen und es scheint zu arbeiten. Ich habe immer noch Probleme mit CXF-Web-Services, die zur Laufzeit mit introspection (org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean) generiert werden. Jeder Dienst benötigt ungefähr 2 Minuten, um erstellt zu werden. Aber zumindest wurden einige Fortschritte gemacht.
Etwas anderes erwähnenswert: die Anwendung mit Java Web Start auf Java 9 langsam ist, obwohl es mit 1,8
- 1. Postgres Abfrage langsam mit Index nur Scan
- 2. Nicht in der Lage, Federkomponente in Kamel zu komponieren Komponente
- 3. Autowire Jdbc Vorlage
- 4. Anmerkung zum Laden der Federkomponente
- 5. wie Federkomponente und normale Klasse zusammen in mapstruct verwenden?
- 6. SpringBoot: Kann nicht Autowire Klasse aus anderer Jar-Bibliothek
- 7. Ordner Scan-Skript, um alle Dateien mit <files></files> umgeben wollen, aber nicht die Ordner
- 8. Knoten child_process langsam beim Ausführen von jar
- 9. Unsigned und signierter Vergleich
- 10. Emuliert verschachtelte für Schleifen mit Scan ist langsam
- 11. Fehler beim Generieren signierter APK: java.util.zip.ZipException: Eintrag doppelt
- 12. Spring inject ohne Autowire Annotation
- 13. Was ist ein signierter Commit?
- 14. Frühling Autowire ohne Setzer Methode
- 15. mp4 files/SSTS info
- 16. Fehler beim Generieren signierter APK in Android
- 17. Erzeugung signierter APK fehlende Ressourcendateien
- 18. Im geschlossenen Netzwerk arbeitet Zeitstempeloption mit signierter JAR, wenn das Zertifikat abgelaufen ist?
- 19. Java Split Files in zwei Listen
- 20. Duplicate Files in APK Kopierte - Android
- 21. Spring - Autowire java.lang.NoClassDefFoundError
- 22. Cling Upnp Scan verursacht ClassDefNotFoundError Jetty
- 23. Frühling: keine Autowire Bean
- 24. Spring kann JdbcTemplate nicht autowire
- 25. Autowire MongoRepository im Frühjahr MVC
- 26. Injection von autowired Abhängigkeiten in einer JAR-Datei fehlgeschlagen
- 27. Autowire HttpServletRequest in Spring Controller
- 28. Jetty Startverzögerung aufgrund Scan
- 29. Frühling Boot-Komponente Scan umfasst eine einzige Klasse
- 30. Puzzling Leistung der Index-Scan. Warum ist der Scan-Index langsam, obwohl Ergebnismenge ist klein und indiziert
Der Vollständigkeit super schnell ist: welche Version und Anbieter von Java? (ex: Oracle Laufzeit, OpenJDK Build, ...) – Gimby
Es ist std. Oracle JDK 8u141 und ich probierten andere (Immer Standard Oracle). Der gleiche Effekt die ganze Zeit – magicroomy