Ich habe gelesen, dass die gemeinsame Nutzung eines einzelnen JAXBContext-Objekts über mehrere Threads die CPU-Auslastung einer Anwendung, die JAXB verwendet, erheblich reduzieren kann. Ein Beweis dafür ist hier . Wir verwenden derzeit Apache CXF zur Entwicklung von Webdiensten. Apache CXF muss standardmäßig JAXB verwenden.
Wie kann ich Apache CXF unter Verwendung der obigen Informationen so konfigurieren, dass ein einzelner JAXBContext ohne Verwendung einer Spring-basierten Konfigurationsdatei verwendet wird, da ich eine Codebasis suche, die den Servlet-Transport ohne Spring verwendet? Gibt es weitere Konfigurationsparameter, die für den JAXBContext hinzugefügt werden können, um die Leistung weiter zu verbessern?
Sie können die vorgeschlagene Lösung hier ausprobieren , basierend auf der Definition eines globalen JAXBContext, aber ich bin mir nicht sicher, ob es gut mit jax-rs spielen wird.
Eine einfachere Lösung ohne Feder wäre es, Ihre eigene @Provider
zu definieren, org.apache.cxf.jaxrs.provider.JAXBElementProvider
zu erweitern und sie in cxf zu registrieren, zum Beispiel mit der Datei openejb-jar.xml
, wenn Sie mit tomee .
Ihr Provider würde folgendermaßen aussehen:
%Vor% und es müsste in der WEB-INF/openejb-jar.xml
-Datei in Ihrer Webanwendung wie folgt registriert werden:
Tags und Links java cxf web-services jaxb