Ich habe eine Java-Webanwendung, die eine Plugin-Architektur verwendet. Ich würde gerne wissen, ob jemand eine Lösung hat, bei der man ein Servlet mit servvet-Mapping zum servletconfig hinzufügen kann, während die Web-App läuft? Die Idee ist, dass eine Klasse zum Ordner/WEB-INF/classes hinzugefügt und als Servlet aktiviert werden kann, ohne die Web-App neu zu starten. Wenn der Benutzer das "Plug-in" entfernt, muss der Code aus der servletconfig entfernt werden.Dynamisch ein Servlet zur ServletConfig hinzufügen
Antwort
Es gibt keine Standard-Servlet-API, um dies zu erreichen.
Sie können dies in Tomcat tun. In Ihrer Webanwendung muss Ihr Master-Servlet (das andere erstellt) ContainerServlet
implementieren, damit Sie das Objekt Wrapper
erreichen können. Sobald Sie Ihre Klassendatei installiert haben, können Sie folgende Anrufe tätigen:
Diese Anrufe erstellen ein Servlet im laufenden Betrieb. Sie müssen Wege finden, diese Informationen zu erhalten. Sie können dies tun, indem Sie web.xml aktualisieren oder in Ihre eigene Datei schreiben.
Das Hinzufügen und Entfernen von Klassen zu/von einer laufenden Anwendung ist schwierig. Sie können sich für eine kommerzielle Lösung JRebel ansehen.
Wenn Ihre Benutzer nicht sehr lange Konversationen/Sitzungen haben, kann ein Neustart Ihrer Web App möglicherweise schnell genug sein, dass sie nicht bemerken. Wenn dies für Sie funktioniert, wird das Problem ziemlich einfach.
Angenommen, Sie verwenden Tomcat, können Sie Ihren Server mit reloadable=true
konfigurieren, und die Anwendung wird neu gestartet, sobald Sie ein neues web.xml
in das Verzeichnis webapps
werfen. Sie können dem Verzeichnis WEB-INF/classes
neue Klassen hinzufügen und dann web.xml
aktualisieren, das sollte gut funktionieren. Das Entfernen von Klassen kann schwieriger sein, wenn diese Klassen verwendet werden. Möglicherweise möchten Sie einen 2-Schritt-Prozess ausführen, bei dem Sie zuerst eine web.xml
bereitstellen, die nicht mehr an eine bestimmte Servlet-Klasse weiterleitet, dann ein wenig auf Klassenbenutzer warten und dann die Klasse löschen und erneut eine aktualisierte web.xml
bereitstellen.
Ich glaube nicht, dass Sie das dynamisch machen können, aber Sie könnten versuchen, das Servlet mit einem vorkonfigurierten Filter aktiv oder inaktiv zu machen. Stellen Sie sicher, dass der Filter nach einem Wert sucht, den Sie entweder in einer Datenbank oder im Dateisystem dynamisch ändern können, und geben Sie an, wie die Anforderung umgeleitet werden soll, wenn das Servlet "ausgeschaltet" ist.
Ich denke, es wäre unhöflich, einfach ein Servlet auszuschalten, ohne den Benutzern irgendeine Art von Feedback zu geben.
- 1. TextView dynamisch zur Aktivität hinzufügen
- 2. Ein Objekt dynamisch erstellen und zur Liste hinzufügen JavaFX
- 3. Felder dynamisch zur MATLAB GUI hinzufügen?
- 4. java.lang.IllegalStateException: ServletConfig wurde nicht initialisiert
- 5. Werte dynamisch zur Arraylist von userinput hinzufügen
- 6. Hinzufügen eines HTTP-Headers zur Anforderung in einem Servlet-Filter
- 7. ServletConfig vs ServletContext
- 8. Dynamisch JFreeChart in Servlet generieren
- 9. Beim Ausführen als auf Server, Eclipse - Tomcat - java.lang.NoClassDefFoundError: javax/Servlet/ServletConfig
- 10. Dynamisch hinzufügen zu TEMPLATE_DIRS zur Laufzeit mit einem Django-Projekt
- 11. Dynamisch Objekte aus Drop-down-Liste zur Liste hinzufügen
- 12. Rubin - dynamisch Eigenschaft auf Klasse hinzufügen (zur Laufzeit)
- 13. Dynamisch zur ersten Sammlung in einer verschachtelten Sammlung hinzufügen VBA
- 14. hinzufügen Eigenschaft für ein Objekt dynamisch
- 15. Skalenmarkierungen dynamisch hinzufügen?
- 16. Ext JS Hinzufügen von Listener zur Schaltfläche dynamisch hinzugefügt
- 17. Dynamisch Hinzufügen von Bildern zur Gridview in Android
- 18. Dynamisch einen neuen Actor hinzufügen
- 19. JavaFX2 Controls dynamisch hinzufügen
- 20. Dynamisch TextBox in Android hinzufügen
- 21. Servlet Dispatcher ist zur Zeit nicht verfügbar
- 22. PDF zur AFP-Ausgabe hinzufügen
- 23. Hinzufügen von Ereignissen dynamisch
- 24. Gridview Button dynamisch hinzufügen
- 25. Dynamisch DockablePanes hinzufügen
- 26. Neue Tabellenansichtszellen dynamisch hinzufügen
- 27. Java Servlets Aufschalten init (ServletConfig config)
- 28. Dynamisch faltbare Elemente hinzufügen
- 29. Subdomains dynamisch hinzufügen?
- 30. Hinzufügen von Rasterspalten dynamisch
Das ist perfekt, vielen Dank. – BigBadOwl