Domanda

Prima di tutto il mio Java è al di là di ruggine e non ho mai fatto JSP o servlet, ma sto cercando di aiutare qualcun altro a risolvere un problema.

Un modulo reso da JavaScript viene postato su un JSP. Alcuni dei campi in questo modulo hanno dimensioni superiori a 100 KB. Tuttavia, quando il campo modulo viene recuperato sul lato JSP, il valore del campo viene troncato a 100 KB.

Ora so che c'è un problema simile in ASP Request.Form che può essere aggirato usando Request.BinaryRead. Esiste un equivalente in Java?

O in alternativa c'è un'impostazione in Websphere / Apache / IBM HTTP Server che aggira lo stesso problema?

È stato utile?

Soluzione 2

Abbiamo risolto il problema. Nulla a che fare con le impostazioni del server Web come è risultato e nulla veniva troncato nel post.

Il campo modulo prima della pubblicazione veniva suddiviso in blocchi di dimensioni 102399 byte da JavaScript e ogni blocco veniva aggiunto al campo modulo come valore, quindi stava finendo con una matrice di valori. Request.Form () sembra concatenare automaticamente questi valori per riprodurre la singola stringa gigante ma Java getParameter () no. L'uso di getParameterValues ??() e la ricostruzione della stringa dai valori restituiti ha comunque risolto il problema.

Altri suggerimenti

Poiché la richiesta inviata deve essere mantenuta in memoria dal contenitore servlet per fornire la funzionalità richiesta dall'API ServletRequest, la maggior parte dei contenitori servlet ha un limite di dimensione configurabile per prevenire attacchi DoS, poiché altrimenti un piccolo numero di client fasulli potrebbe provocare esaurimento della memoria del server.

È un po 'strano se WebSphere stia silenziosamente troncando la richiesta invece di fallire correttamente, ma se questa è la causa del tuo problema, potresti trovare le opzioni di configurazione qui nella documentazione di WebSphere .

Puoi utilizzare getInputStream (byte grezzi) o getReader (dati carattere decodificati) per leggere i dati dalla richiesta. Nota come questo interagisce con la lettura dei parametri. Se non vuoi usare un servlet, dai un'occhiata a Filtro su avvolgere la richiesta.

Mi aspetto che WebSphere respinga la richiesta anziché troncare arbitrariamente i dati. Sospetto un bug altrove.

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