Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-03-2006, 16:53   #1
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
[Java Servlet] Pagina pasticciata quando aperta in contemporanea

Il problema è questo: sto sviluppando un'applicazione Server-Oriented per una rete intranet: essenzialmente più terminali devono collegarsi contemporaneamente al server (Apache Tomcat) tramite collegamento wireless; il server distingue le varie sessioni e, di conseguenza, non dovrebbero esserci problemi all'apertura contemporanea della servlet da parte di più terminali...

Ciò, infatti, è vero per alcune di esse (l'applicativo è sviluppato su più pagine/servlet tra esse collegate) ma nell'apertura di una data servlet (particolarmente complessa e dal caricamento lungo), viene fuori un bel pasticcio: a volte da un terminale viene stampata una doppia pagina (in cascata), mentre dall'altro pagina vuota (o parzialmente stampata); altre volte da una parte mi dà errore; altre volte ancora entrambe le pagine vengono visualizzate con frammenti di codice in bella vista tra un campo testo e un'altro...

Mi verrebbe quasi da pensare che sia un problema del Tomcat e non del codice... ma spero proprio di no!

La mia speranza è che qualcuno di voi sia incappato nel mio stesso problema e che mi spieghi come risolverlo. Grazie.
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2006, 17:13   #2
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
La servlet non dovrebbe mai essere troppo grande o particolarmente complessa.
Hai già provato a spostare fuori il codice "pesante" e a richiamarlo dalla servlet, in modo da attivare lo stream di output quando cominciano ad arrivare i dati dell'elaborazione e non durante ?
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2006, 10:27   #3
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Quote:
Originariamente inviato da pinok
La servlet non dovrebbe mai essere troppo grande o particolarmente complessa.
Hai già provato a spostare fuori il codice "pesante" e a richiamarlo dalla servlet, in modo da attivare lo stream di output quando cominciano ad arrivare i dati dell'elaborazione e non durante ?
Uhmmm... no, in effetti e se devo essere sincero non ho ben idea di come procedere. Un aiutino?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2006, 12:45   #4
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da Corvo80
Uhmmm... no, in effetti e se devo essere sincero non ho ben idea di come procedere. Un aiutino?
Ti fai una classe che si occupa delle elaborazioni, meglio se messa in un package (=directory).
Poi nella servlet importi la classe, passi i parametri che servono all'elaborazione (mediante il costruttore o direttamente al metodo), invochi il metodo e recuperi il risultato (ad es. un vettore o uno stringbuffer se è una sequenza di istruzioni HTML).

Quindi apri lo stream di scrittura, ci riversi il codice HTML e chiudi lo stream, eventualmente invocandoci sopra un flush per pulirlo.
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 14:00   #5
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Mi sono appena reso conto di una grave inconsistenza del mio codice (la mia niubbaggine non smette mai di stupirmi). L'oggetto PrintWriter che uso per lo streaming di output l'ho dichiarato fuori dai metodi (i quali non sono synchronized), con conseguente insorgere di problemi di concorrenza.

Se ho capito bene basta chiudere il codice concorrente in blocchi synchronized o dichiarare l'oggetto PrintWriter dentro e non fuori dei metodi, vero?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 14:03   #6
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da Corvo80
Se ho capito bene basta chiudere il codice concorrente in blocchi synchronized o dichiarare l'oggetto PrintWriter dentro e non fuori dei metodi, vero?
Potrebbe bastare.
Provare, grazie al cut & paste, costa poca fatica quindi prova con una servlet e se funziona fallo per le altre.

Il suggerimento di organizzare meglio il codice resta comunque valido, se non altro per facilità di gestione e riusabilità del codice
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 14:19   #7
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Come sempre hai ragione.

Grazie dell'aiuto, se avrò altri problemi tornerò a perseguitarti!!!
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 14:41   #8
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Quote:
Originariamente inviato da Corvo80
Come sempre hai ragione.

Grazie dell'aiuto, se avrò altri problemi tornerò a perseguitarti!!!

Scherzo, sono qua...
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 16:33   #9
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Neanche a farlo apposta ho subito un altro consiglio da chiederti/vi.

Sto riprogettando il codice rendendolo più modulare e più elegante e mi è giunto un dilemma:

siccome gli elementi dell'interfaccia grafica (nomi delle label, dimensioni dei campi testo, etc...) delle varie servlet vengono letti da database tramite interrogazioni SQL restituite come oggetti ResultSet, l'idea è quella di eseguire la query alla prima apertura della servlet ( dal metodo init() ) e clonarne il risultato ogni volta che una nuova sessione viene creata.

Il problema è che gli oggetti ResultSet non sono clonabili, a quanto pare. Come posso fare?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 20:07   #10
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Cosa intendi per clonare le resultSet?
Se intendi dire salvarti gli oggetti per non interrogare di nuovo il DB, se sono pochi dati puoi metterli in una lista e poi in sessione, se sono tanti non ti conviene (appesantiscono la memoria).
Tutto sommato, se sono pochi, a recuperarli ogni volta non è che pesa molto...
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 27-03-2006, 20:31   #11
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Niente, volevo dire tramite il metodo clone() ma mi sono reso conto che c'è un errore concettuale di fondo: ResultSet non è una classe, è un interfaccia.

Uhmmm... che ne dici di una lista statica, lasciando perdere di copiarla ogni volta nelle variabili sessione? Coi ResultSet aveva un senso, poichè sono provvisti di un puntatore che utilizzavo per la costruzione della riga ma se parliamo di lista posso usare un puntatore per ogni sessione e un'unica lista...
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Maserati, si concretizza la pista cinese...
Corea del Sud preoccupata: le cinesi YMT...
Se ne vendono 3000 al mese su Amazon: Sm...
Sedie gaming ergonomiche su Amazon: SONG...
Criptovalute, il Senato USA blocca il Cl...
Samsung Galaxy S26 FE a 635€ con coupon ...
Tesla porta il Cybercab in Cina, ma solo...
I modelli di OpenAI mentono e si nascond...
Rivoluzione in arrivo per il Game Pass? ...
Lefant V1 torna a 99€: scopa elettrica s...
L'FBI sequestra NightmareStresser: centi...
Copilot sparisce da Outlook classico dop...
DEEPOWER Fat Bike 20'': la e-bike con ba...
Sam Altman a Dreamforce 2026, OpenAI ver...
Volkswagen ID.3 GTI: la GTI elettrica pi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v