FileUpload Java web

Boa tarde galera! Estou desenvolvendo uma função para inserção de imagens a produtos de um sistema, porém estou tendo problemas com o Fileupload. Quando clico no botão upload ele não chama o evento, se alguém tiver conhecimento e puder me ajudar, segue abaixo o código.

Código de ação do botão.

<p:outputLabel value="Imagem: " for="foto" />
<p:fileUpload id="foto" mode="advanced" fileUploadListener="#{produtoBean.upload}" update=":mensagem" auto="false" />

Web.xml

<!-- Nome da Aplicação -->
<display-name>Riverp</display-name>

<!-- Estágio do Projeto -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Configuração do JSF -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>


<listener>
	<listener-class>br.com.riverp.util.HibernateContexto</listener-class>
</listener>

<context-param>
	<param-name>primefaces.UPLOADER</param-name>
	<param-value>native|commons</param-value>
</context-param>

<context-param>
	<param-name>primefaces.UPLOADER</param-name>
	<param-value>auto|native|commons</param-value>
 </context-param>
</web-app>

ProdutoBean.java

public void upload(FileUploadEvent evento){
	try {
		UploadedFile arquivoUpload = evento.getFile();
		Path arquivoTemp = Files.createTempFile(null, null);
		Files.copy(arquivoUpload.getInputstream(), arquivoTemp, StandardCopyOption.REPLACE_EXISTING);
		produto.setCaminho(arquivoTemp.toString());
		
		
	}catch (IOException erro) {
		Messages.addFlashGlobalError("Ocorreu um erro ao carregar a imagem.");
		erro.printStackTrace();
	}
	
}

Já baixei e instalei as bibliotecas commons-fileupload e commons-io

Alguém?