2017-06-06 14 views
1

Ich versuche, zwei Prozesse mit Bean durchzuführen, ist mein Problem, dass ich nicht finden kann, wie diese Prozesse kontinuierlich ausgeführt werden. Der erste Prozess ist das Senden eines Objekts und der zweite Prozess ist die Antwort des Objekts.Probleme: Senden und Empfangen von Daten

Ich stelle mir vor, dass mit dem Code meine Frage klarer wird.

+1

Vielleicht können Sie einen [Scheduler] verwenden (https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html) –

Antwort

1

versuchen Synchronisierte auf Ihre Methoden hinzufügen

ich diese Probleme oft hatte, weil der Empfänger versucht, etwas zu lesen, die nicht

Mehr Informationen im javadoc beendet ist: https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

, wenn Sie Fügen Sie dieses Schlüsselwort zu den Methoden hinzu, die auf den anderen warten, bis es fertig ist

+1

Ich verstehe das Problem, dass die Methoden aufgerufen werden sollten ** kontinuierlich ** nicht ** synchron ** –

+1

vielleicht meinte er "synchron" :) –

+0

Sorry, ich habe die gleiche Frage in Stackokverflow auf Spanisch und Google Translate hat nicht sehr funktioniert Gut – mantamusica

1

danke maquina,

diese

ist die Lösung:

@Component 
public class Proceso implements InitializingBean{ 
    private static final String XML_SCHEMA_LOCATION = "/proceso/model/schema/proceso.xsd"; 
    private Envio envio; 
    private Respuesta respuesta; 

    public synchronized void Proceso_envio(Proceso proceso, OutputStream outputstream) throws JAXBException{ 
     envio.marshal(proceso, outputstream);} 

    public void synchronized Proceso_respuesta(InputStream inputstream) throws JAXBException, FileNotFoundException{ 
    Object obj = unmarshaller.unmarshal(inputStream); 
    return (Proceso_respuesta) obj;} 

    @Override 
    public void afterPropertiesSet() throws Exception{ 
     SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     Schema schema = schemaFactory.newSchema(getClass().getResource(XML_SCHEMA_LOCATION)); 
     JAXBContext jc = JAXBContext.newInstance(Envio.class, Respuesta.class); 

     this.marshaller = jc.createMarshaller(); 
     this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
     this.marshaller.setProperty(Marshaller.JAXB_ENCODING, StandardCharsets.UTF_8.displayName()); 
     this.marshaller.setSchema(schema); 

     this.unmarshaller = jc.createUnmarshaller(); 

     this.unmarshaller.setSchema(schema); 
    } 
Verwandte Themen