Wie wählt man Saxon TransformerFactory in Java?
In meinem web-Anwendung, die ich verwenden müssen sächsischen TransformerFactory um die XSLT 2.0-aber ich kann nicht mit setProperty-Methode, weil ich nicht das Recht auf den web-server und es gibt einen Security-Manager.
Also ich habe gelesen, dass es möglich sein sollte, dies zu tun:
Verwenden Sie das Services-API (wie detailliert in der JAR-Spezifikation), wenn verfügbar, um zu bestimmen, die classname. Der Services-API nach einem Klassennamen in der Datei META-INF/services/javax.xml.verwandeln.TransformerFactory in Gläsern zur Verfügung, um die Laufzeit.
Fand ich diese Datei in WEB-INF/lib/saxon9.jar aber wenn ich istantiate eine TransformerFactory der werksseitig immer aktiviert statt einer sächsischen Fabrik.
Wie kann ich wählen sächsischen Transformator-Fabrik?
Dank
InformationsquelleAutor der Frage pAkY88 | 2010-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg, dies zu tun ist durch die Angabe der factory-Klasse, wenn immer eine neue TransformerFactory.
Ich glaube nicht, dass das aufrufen einer bestimmten factory-Implementierung funktioniert - ich glaube, die Standard-system-Transformator kann noch zurückgegeben werden (zumindest das ist, was passiert, wenn ich hatte, xalan und saxon im classpath).
Beispiel:
oder für Sächsische
Javadocs:
InformationsquelleAutor der Antwort Andrew B
Können Sie versuchen, durch die Einstellung der system-property im code wie
tun Sie dies, bevor eine Instanz der TransformerFactory.
Hinweis: dies zwingt alle webapps auf den Tomcat zu verwenden saxon - so müssen Sie sicherstellen, dass alle anderen webapps, die mit dem Standard sind okay.
InformationsquelleAutor der Antwort JoseK
Datei erstellen
META-INF/services/javax.xml.transform.TransformerFactory
mit Inhalt:net.sf.saxon.TransformerFactoryImpl
. Das ist es.InformationsquelleAutor der Antwort yegor256
Wenn Ihre Anwendung wirklich benötigt sächsischen und funktioniert nicht mit einem anderen Prozessor, dann wäre es wahrscheinlich gut zu instanziieren des sächsischen TransformerFactory direkt über
new net.sf.saxon.TransformerFactoryImpl()
InformationsquelleAutor der Antwort Jörn Horstmann