Questa parte
codice:
file = new File("codProd.txt");
if(file.createNewFile()){
E' la probabile fonte d'errore.
Tu stai sviluppando una WebApp, di conseguenza hai un ApplicationServer (o un Servlet Container, come Tomcat). Questo server viene avviato usando un determinato utente, il quale, evidentemente, non ha i permessi per scrivere sulla directory corrente... qual è la directory corrente? Bella domanda: nella maggior parte dei casi lo sa solo il sistema operativo.
Ora, a parte il sapere quale sia o non sia la directory corrente, il problema è di progettazione: non puoi MAI (in generale) fare affidamento sulla directory corrente. E questo è tanto più vero nelle WebApplications. Di conseguenza, non bisogna MAI scrivere un codice come quello.
Quando la tua WebApp ha bisogno di creare dei file, tu devi essere a conoscenza perfettamente della loro posizione sul disco del server. Come si fa? Semplice: si dà al file un percorso completo. I modi per fare questo sono svariati, ne elenco 2:
1) Scrivere nel codice sorgente il percorso completo del file che si andrà a creare: questo è il metodo più sbagliato del mondo, ma è un metodo.
2) Fare in modo che il percorso della directory in cui verranno creati i file sia noto all'applicazione: tramite, ad esempio, un parametro di configurazione (un buon posto potrebbe essere il deployment descriptor file: web.xml).
Detto che il punto 1 è bene dimenticarselo e far finta che non esista, la soluzione consiste nell'adottare una strategia simile a quella del punto 2: l'applicazione ottiene il valore del parametro e lo usa. Esempio:
Nel web.xml
codice:
...
<context-param>
<description>Directory in cui creare i file temporanei</description>
<param-name>tempFileDir</param-name>
<param-value>Percorso/Completo/Alla/Directory/</param-value>
</context-param>
Nella servlet (o nel tuo componente):
codice:
// Suppongo di essere in una servlet
String dir = getServletContext().getInitParameter("tempFileDir");
...
file = new File(dir + "/codProd.txt");
if(file.createNewFile()){
...
}
Chiaramente il codice lo dovrai adattare alla tua situazione, ma il concetto i concetti salienti sono questi:
1) I files devono sempre essere scritti in una posizione NOTA, quindi, ben definita.
2) Per definire la posizione dei temporanei si usa un file di configurazione (il deployment descriptor, un file XML a tua scelta, un file di properties, ecc.)
3) Quando si deve creare il file, si preleva il percorso dalla configurazione e lo si usa.
Chiaramente, dopo aver creato il file dovrai inviarlo al client. Per inviarlo al client dovrai leggere il file. E anche qui, per leggerlo, userai il percorso settato nel file di configurazione per sapere dove reperirlo.
Ciao.