2014-04-11 3 views
5

Ich verwende thymeleaf Vorlage-Engine, um Anfrage an SOAP-Service zu erstellen. Die Klasse, die das Senden sieht wie folgt aus:Thymelpflaume | Ist TemplateEngine.process Thread-sichere Operation?

import java.io.StringReader; 
import java.util.*; 
import javax.xml.transform.stream.*; 

import org.springframework.ws.client.core.WebServiceTemplate; 

import org.thymeleaf.*; 
import org.thymeleaf.context.*; 
import org.thymeleaf.templateresolver.*; 

public class SomeService 
{ 
    private final TemplateEngine templateEngine; 
    private final WebServiceTemplate webServiceTemplate; 

    public RetrieveServiceThymeleafBased() { 
     webServiceTemplate = new WebServiceTemplate(); 
     webServiceTemplate.setDefaultUri("http://some.path/to/soap/service"); 

     ITemplateResolver templateResolver = new ClassLoaderTemplateResolver(); 
     templateEngine = new TemplateEngine(); 
     templateEngine.addTemplateResolver(templateResolver); 
    } 

    public void sendMessage(String orderNumber) { 
     Context params = new Context(); 
     params.setVariable("CreateDateTime", new Date()); 
     params.setVariable("GUID", UUID.randomUUID()); 
     String xmlContent = templateEngine.process("template.xml", params); 

     StreamSource source = new StreamSource(new StringReader(xmlContent)); 
     StreamResult result = new StreamResult(System.out); 
     webServiceTemplate.sendSourceAndReceiveToResult(source, result); 
    } 
} 

Ich weiß, dass webServiceTemplate.sendSourceAndReceiveToResult - Thread-sichere Betrieb ist, aber ich kann nicht diese Art von Informationen über templateEngine.process

Frage finden: Ist templateEngine.process ein Gewinde- sicherer Betrieb oder nicht

Antwort

14

Ja, ist es. TemplateEngine Objekte sind für den Einsatz in hochgradig parallelen Umgebungen ohne Probleme konzipiert (hoffe ich!;)).

Disclaimer, nach StackOverflow-Regeln: Ich bin Thymeleafs Autor.

+0

Wow! Danke! – CAMOBAP

+0

Schön es zu hören, aber da es eine ziemlich komplexe Verflechtung von Thymelaft und Frühling ist, passieren Dinge - [Thymeleaf currency error ...] (https://github.com/thymeleaf/thymeleaf-spring/issues/83). ... Seien Sie also vorsichtig –

+0

Haben Sie einen kleinen Kommentar in der Javadoc. Das war die erste Information, die ich thread-safe/concurrent suchte. Es wird erwähnt, dass Instanziierung teuer ist. Nächster Gedanke ist dann 'Singleton verwenden' nächsten Gedanken ist dann ist es 'Thread-Sicherheit' ... –