Domanda

quando dicono che il controller di azione nel framework struts è multi-thread, significa che ci sono più istanze del servlet che prendono la richiesta e la inoltrano al modello. O significa che esiste un'unica istanza che accetta tutte le richieste? Tutti gli elementi visivi saranno apprezzati

È stato utile?

Soluzione

Come per la maggior parte degli altri servlet, viene creato un thread separato per elaborare ogni richiesta. Devi implementare l'interfaccia SingleThreadedModel per ottenere una nuova istanza del servlet per ogni richiesta.

Altri suggerimenti

vedi http://struts.apache.org/1.x/ Userguide / building_controller.html

Il servlet del controller Struts crea solo un'istanza della classe Action e utilizza questa istanza per soddisfare tutte le richieste. Pertanto, è necessario scrivere classi di azioni thread-safe. Segui le stesse linee guida che utilizzeresti per scrivere servlet thread-safe. Ecco due linee guida generali che ti aiuteranno a scrivere classi di azione scalabili e thread-safe:

  • Usa solo variabili locali - Il principio più importante che aiuta nella codifica thread-safe è di usare solo variabili locali, non variabili di istanza , nella tua azione classe. Le variabili locali vengono create su uno stack assegnato (dalla JVM) a ciascun thread di richiesta, quindi non è necessario preoccuparsi di condividerle. Un'azione può essere fattorizzata in diversi metodi locali, purché tutte le variabili necessarie vengano passate come parametri di metodo. Ciò garantisce la sicurezza dei thread, poiché JVM gestisce tali variabili internamente utilizzando lo stack di chiamate associato a un singolo thread.

  • Conserva risorse - Come regola generale, l'allocazione di risorse scarse e il loro mantenimento attraverso le richieste dello stesso utente (nella sessione dell'utente) può causare problemi di scalabilità. Ad esempio, se l'applicazione utilizza JDBC e si assegna una connessione JDBC separata per ogni utente, è probabile che si verifichino problemi di scalabilità quando il sito viene visualizzato improvvisamente su Slashdot. Dovresti cercare di utilizzare i pool e liberare risorse (come connessioni al database) prima di inoltrare il controllo al componente Visualizza appropriato, anche se un metodo bean che hai chiamato genera un'eccezione.

struts 1 non è thread-safe; ma per quanto riguarda strus 2, è un'istanza per richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top