Ich habe zwei Tomcat Web-Anwendungen, die Informationen mit einem Singleton teilen müssen. Ich habe es bereits geschafft, indem ich die Jared-Klassen in das Tomcat-Common-Verzeichnis gestellt habe. Jede Webanwendung erhält dann dieselbe Kopie des Singletons. Was ich tun möchte, ist dieses Verhalten in Eclipse zu integrieren. Ich möchte, dass die allgemeinen Klassen ein einzelnes Projekt sind, das jedes Mal, wenn ich den Tomcat-Server in Eclipse starte, in den Tomcat Common Class Loader integriert wird. Jeder weiß, wie man Eclipse dafür konfiguriert?Konfigurieren Sie das Projekt in Eclipse, so dass es in der Tomcat "gemeinsame" Klassenlader
Antwort
Ich habe es geschafft zu arbeiten. Hier ist, was ich getan habe:
- Erstellt ein
common
Projekt im Eclipse-Arbeitsbereich. - Die beiden Webanwendungen mit den Namen
first
undsecond
erstellt, die sich dascommon
-Projekt teilen sollten. - Ändern Sie
catalina.properties
in das Projekt Server und fügen Sie die Zeileshared.loader=/path-to-workspace/common/bin
hinzu.
Wenn die Webanwendungen erstellt werden, wird ein Servers
Projekt mit der Tomcat-Konfiguration erstellt.
Dies funktioniert perfekt für die Entwicklung. Jedes Mal, wenn ein neuer Build erstellt wird, ist alles synchron. Für die Bereitstellung müssen Sie das Projekt common
in ein common.jar
konvertieren und in ${catalina.home}/lib
platzieren.
kann eine sein, die Möglichkeit zu extend the tomcat class loader, um sein könnte für die Klassenlader in other directories than WEB-INF/lib
, dies zu suchen:
Erweiterung
org.apache.catalina.loader.WebappClassLoader
und überschreibt diefindClassInternal
Methode.Konfigurieren von Tomcat zur Verwendung des erweiterten Classloaders.
...
Dann auf dem in Eclipse setzt Ihr gemeinsames Projekt, das Sie könnte:
Dies wird in der entsprechenden Webapp Konfigurationsdatei unter dem Tomcat conf/Catalina/hostname
Pfad mit folgendem Elemente getan "Benötigte Projekte auf dem Build-Pfad", wodurch es Teil des Klassenpfads wird.
Das Ihre erweiterten Classloader bedeutet in der Lage sein muss, für andere classe aussehen:
- entweder in einem festen vordefinierten Pfad
- oder in einem vordefinierten Pfad innerhalb des Classpath.
Nicht getestet selbst, aber möglicherweise kann das Ihnen einen Anhaltspunkt zu diesem Thema geben.
Eine einfachere Lösung wird durch noselasd in den Kommentaren vorgeschlagen, unter Ausnutzung der GlobalNamingResources Component von Tomcat unter.
jedoch die FAQ does mentions:
Wenn Sie einen neuen Tomcat-Server in Eclipse, die neuen Server-Assistenten erstellen nimmt sie nicht sicher ist, das aktuelle Verhalten der Tomcat-Installation zu beeinflussen, dass dieser neue Server verwenden.
WTP kann das Verhalten des installierten Tomcat nicht beeinflussen, indem Tomcat mehrere Server-Instanzen von einer einzigen Installation aus ausführen kann. Daher ist die Standardkonfiguration für jeden neuen Tomcat-Server, den Sie erstellen, eine neue Server-Instanz der Tomcat-Installation, die der Tomcat-Laufzeit zugeordnet ist, die im Assistenten ausgewählt wurde.
Wenn Sie davon ausgehen, dass der neue Tomcat-Server in Eclipse dieselbe Instanz ausführt wie die Standard-Batchdateien in Ihrer Tomcat-Installation, werden Sie wahrscheinlich überrascht sein, wenn sich der Tomcat-Server in Eclipse nicht wie erwartet verhält.Die Tomcat-Serverkonfiguration kann so geändert werden, dass sie dieselbe Instanz wie Ihre Tomcat-Installation ausführt.
Hier finden Sie wie man modify the server.xml in WTP.
- 1. Angular2-Projekt in Eclipse konfigurieren
- 2. Eclipse, Tomcat Projekt Kontextstamm ist Eclipse-Ordner
- 3. So konfigurieren Sie Maven in Eclipse Mars
- 4. So konfigurieren Sie die Sicherheitsrichtlinie in Tomcat 6
- 5. Konfigurieren von Python-Projekt in Eclipse
- 6. Gemeinsame JNDI-Ressourcen in Tomcat
- 7. So konfigurieren Sie die Eclipse-XML-Formatierung?
- 8. Konfigurieren der Konsolenanwendung zum Ausführen in Eclipse
- 9. Eclipse Veröffentlichung in Tomcat
- 10. Konfigurieren Sie das Build-System so, dass es automatisch anhand der Dateierweiterung ausgewählt wird.
- 11. So konfigurieren Sie WCF in einem separaten DLL-Projekt
- 12. Eclipse so konfigurieren, dass die Rücktaste nicht verwendet wird
- 13. Laufendes Maven-Projekt auf Tomcat von Eclipse
- 14. Logback in Eclipse konfigurieren
- 15. Konfigurieren Sie zusätzliche Bibliotheken für die Verwendung in JSP (Tomcat)
- 16. So konfigurieren Sie Apache für Proxy-Anfragen
- 17. So importieren Sie Java-Projekt (Eclipse)
- 18. Dojo in Eclipse konfigurieren
- 19. Tomcat mit Eclipse ClassNotfoundException in Vaadin Projekt (maven)
- 20. Konfigurieren Sie Tomcat, so dass ich eine JSP-Seite mit MySQL verbinden kann
- 21. So erstellen Sie zwei Hauptnetzwerke in einem Eclipse-C++ - Projekt
- 22. Gibt es eine Möglichkeit, das Tomcat-Servlet-Arbeitsverzeichnis zu konfigurieren?
- 23. In der Eclipse, wie Umgebungsvariablen für das gesamte Projekt (Ubuntu)
- 24. Tomcat in Eclipse konnte nicht mit JSF-Projekt
- 25. So erstellen Sie gemeinsame/gemeinsame Instanz in VBA
- 26. Konfigurieren von Starts in Eclipse
- 27. So laden Sie das JSF-Projekt ins Internet
- 28. Konfigurieren Sie übergeordnete/root-Projekt für untergeordnetes Projekt in Gradle
- 29. Konfigurieren von FindBugs in Eclipse
- 30. So konvertieren Sie VisualStudio-Projekt in Eclipse CDT
Sollte nicht benötigt werden, um überhaupt so beteiligt zu sein. Tomcat verfügt über serverweite Einstellungen und Sie können Ihre eigenen globalen Ressourcen in server.xml definieren, die für alle Webapps freigegeben werden können. http://tomcat.apache.org/tomcat-5.5-doc/config/globalresources.html Sie können Ihre eigenen Klassen anstelle von Integer verwenden, wie im obigen Beispiel. Aber ich weiß nicht, wie man mit server.xml und dem globalen Verzeichnis lib/in Eclipse herumspielt. – nos