Upload de arquivos com "Commons File Upload" e servlet

Olá pessoal,
é minha primeira vez me aventurando em upload de arquivos e escolhi utilizar a API Commons File Upload, da Apache.

Utilizei o tutorial de um link da internet (http://www.jsptube.com/servlet-tutorials/servlet-file-upload-example.html ) e personalizei para o que eu queria:

[list]Salvar o arquivo enviado no servlet, mais especificamente na pasta “DESTINATION_DIR_PATH” (verifiquei e ela já existe, bem como a pasta “temp”);[/list]
[list]Pegar outros campos do form, como uma entrada de texto.[/list]

Estou rodando á partir do Glassfish 4 (está dentro de um projeto que precisa de Glassfish).

Meus problemas são:
[list]Apesar de acusar que recebe o arquivo, não guarda em disco[/list]
[list]Não consegue ler outros parâmetros, como a entrada de texto[/list]

Alguém pode me ajudar?
Segue o código abaixo:

Página de Upload

<html>
    <head>Upload de arquivo</head>
	<body>
		<p>Commons File Upload Example</p>
		&lt;form action="FileUploadServlet" enctype="multipart/form-data" method="POST"&gt;
			&lt;input type="file" name="file1"&gt;<br>
                        &lt;input type="text" name ="descrArquivo" size="100" value=""&gt;<br/>
                        &lt;input type="Submit" value="Upload File"&gt;<br/>
		&lt;/form&gt;
	&lt;/body&gt;
&lt;/html&gt;

Servlet

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class CommonsFileUploadServlet extends HttpServlet {

    private static final String TEMP_PATH = "/temp";
    private File tmpDir;
    private static final String DESTINATION_DIR_PATH = "/data/upload";
    private File destinationDir;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        ServletContext sc = getServletContext();
        tmpDir = new File(sc.getRealPath(TEMP_PATH));
        if (!tmpDir.isDirectory()) {
            throw new ServletException(TEMP_PATH + " is not a directory");
        }
        String realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
        destinationDir = new File(realPath);
        if (!destinationDir.isDirectory()) {
            throw new ServletException(DESTINATION_DIR_PATH + " is not a directory");
        }

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");

        DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
        fileItemFactory.setSizeThreshold(1 * 1024 * 1024); //1 MB
        fileItemFactory.setRepository(tmpDir);

        ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
        try {
            List items = uploadHandler.parseRequest(request);
            Iterator itr = items.iterator();
            while (itr.hasNext()) {
                FileItem item = (FileItem) itr.next();
                if (item.isFormField()) {
                    out.println("Nome do campo = " + item.getFieldName() +
                            ", Value = " + item.getString());
                } else {
                    out.println("Arquivo = " + item.getName() + "<br/>"
                            + "Mime Type = " + item.getContentType() + "<br/>"
                            + "Tamanho= " + item.getSize() / 1024 + " KB");
                    File file = new File(destinationDir, item.getName());
                    item.write(file);
                    out.println("<br/>Arquivo gravado em: " + file.getPath());
                }
                out.close();
            }
        } catch (FileUploadException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Resolvido.
Foi uma falta de atenção no “out.close();”

tentei implementar este código e deu o seguinte erro:

java.lang.NullPointerException
	javax.servlet.GenericServlet.getServletContext(GenericServlet.java:159)
	FileUploadServlet.<init>(FileUploadServlet.java:21)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	java.lang.reflect.Constructor.newInstance(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369)
	org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:169)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)