2017-10-16 4 views
1

Je développe une application Spring MVC utilisant ActiveJDBC comme ORM, un serveur Tomcat et IntelliJ comme IDE.Problème incluant les modifications de phase de post-compilation dans l'artefact déployé sur Tomcat

Pour les fonctionnalités nécessaires, ActiveJDBC nécessite une manipulation de code d'octet - appelée instrumentation par l'ORM - des classes compilées. Ainsi, après la phase de compilation, les méthodes statiques sont ajoutées aux classes compilées. C'est très bien, cependant quand j'essaie de déployer un artefact de mon application web sur Tomcat, le WAR contient les classes compilées avant que la manipulation d'octets (instrumentation) se soit produite.

Pour inclure la sortie compilé après l'instrumentation requise par ActiveJDBC, j'ai essayé:

Création de l'artefact en naviguant dans Fichier> Structure du projet et y compris manuellement la classe compilée qui comprenait les méthodes ajoutées par l'instrumentation. enter image description here Déploiement de l'artefact décrit ci-dessus entraîne l'erreur suivante:

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

Quand je place utilise la sortie de la compilation du module principal, je peux accéder à l'application sur le navigateur, mais recevoir une erreur 500 sur les pages où la le code source appelle les méthodes qui sont rendues disponibles avec l'instrumentation (une tâche de post-compilation).

Mes questions: 1) Pour construire un artefact à déployer, est-il nécessaire d'utiliser la sortie de compilation du module principal? 2) Comment puis-je inclure après la compilation des modifications de phase dans l'artefact si l'artefact inclut la compilation du module principal tel quel?

Répondre

0

Erreur stupide! J'ai oublié d'utiliser la structure de répertoire appropriée lors de la construction de l'artefact manuellement.

0

Pendant que vous pouvez utiliser IntelliJ Idea pour déployer, presque personne ne le fait. Utilisez simplement quelques exemples de projets JavaLite: https://github.com/javalite/simple-example, et plus précisément un plugin Maven Instrumentation: https://github.com/javalite/simple-example/blob/master/pom.xml#L31 pour instrumenter vos modèles avant de les emballer. Après cela, déployez un fichier WAR comme d'habitude. Construire et empaqueter sur la ligne de commande produira des résultats plus cohérents qu'avec un IDE.

En outre, vous pouvez regarder dans ActiveWeb pour votre composant WebPart: http://javalite.io/activeweb car il est bien intégré avec ActiveJDBC.