2017-10-16 1 views
1

Ich entwickle eine Spring MVC-Anwendung mit ActiveJDBC als ORM, einem Tomcat-Server und IntelliJ als meine IDE.Problem mit Post-Compile-Phasenänderungen in Artefakt, das auf Tomcat bereitgestellt wird

Für die erforderliche Funktionalität benötigt ActiveJDBC eine gewisse Byte-Code-Manipulation - genannt Instrumentierung durch das ORM - von kompilierten Klassen. Nach der Kompilierphase werden den kompilierten Klassen also statische Methoden hinzugefügt. Das ist alles in Ordnung, aber wenn ich versuche, ein Artefakt meiner Webanwendung in Tomcat zu implementieren, enthält der WAR die kompilierten Klassen , bevor die Byte-Manipulation (Instrumentierung) aufgetreten ist.

Um die kompilierte Ausgabe Beitrag der Instrumentierung von ActiveJDBC erforderlich sind, habe ich versucht:

das Artefakt Erstellen von> Projektstruktur Datei navigieren und dann die kompilierte Klasse manuell einschließlich, die die Methoden hinzugefügt über Instrumentierung enthalten. enter image description here die Artefakt Bereitstellen obige Ergebnissen in den folgenden Fehlern beschrieben:

The origin server did not find a current representation for the target
resource or is not willing to disclose that one exists.

Wenn ich stattdessen das Hauptmodul der Kompilierung Ausgang verwenden, ich die Anwendung auf dem Browser zugreifen kann, sondern erhalten einen 500-Fehler auf Seiten, auf denen die Quellcode ruft Methoden auf, die mit der Instrumentierung zur Verfügung gestellt werden (eine Post-Compile-Task).

Meine Fragen: 1) Zum Erstellen eines Artefakts, das bereitgestellt werden soll, ist es erforderlich, die Kompilierausgabe des Hauptmoduls zu verwenden? 2) Wie schließe ich nach der Kompilierung Phasenänderungen in das Artefakt ein, wenn das Artefakt die Kompilierung des Hauptmoduls enthält?

Antwort

0

Dummer Fehler! Ich habe vergessen, die entsprechende Verzeichnisstruktur beim manuellen Erstellen des Artefakts zu verwenden.

0

Während Sie könnte verwenden IntelliJ Idee zu implementieren, tut fast niemand dies. Verwenden Sie einfach einige Beispiele aus JavaLite-Projekten: https://github.com/javalite/simple-example und speziell ein Maven Instrumentation Plugin: https://github.com/javalite/simple-example/blob/master/pom.xml#L31, um Ihre Modelle vor dem Verpacken zu instrumentieren. Stellen Sie danach wie gewohnt eine WAR-Datei bereit. Das Erstellen und Verpacken in der Befehlszeile führt zu konsistenteren Ergebnissen als bei einer IDE.

Darüber hinaus können Sie in ActiveWeb nach Ihrem Webpart suchen: http://javalite.io/activeweb, weil es schön mit ActiveJDBC integriert ist.

Verwandte Themen