Importação no jsf com primefaces

Coloco um break point neste ponto “UploadedFile uploadedFile = arquivoImportado.getFile();” e não entra. O que pode ser ?

XHTML

<h:form enctype="multipart/form-data">
				<p:row>
					<p:growl id="messages" showDetail="true" />
					<p:outputLabel value="Pode importar um arquivo de uma vez" />
					<p:fileUpload mode="advanced" skinSimple="true" label="Upload"
						fileLimit="1"
						fileUploadListener="#{arquivocontroller.importarArquivo}"
						uploadLabel="Enviar" cancelLabel="Cancelar" />
				</p:row>
			</h:form>

Controler

public void importarArquivo(FileUploadEvent arquivoImportado) {
		try {
			UploadedFile uploadedFile = arquivoImportado.getFile();
			UUID uuid = UUID.randomUUID();
			UsuarioEntity usuarioLogado = new UsuarioEntity();
			usuarioLogado.setId(1l);
			EntidadeEntity entidadeEscolhinda = entidadeRepository.retornaClassePeloNome(entidade);
			String localArquivo = "C:/sistema_des_if_netsoft/municipio/" + entidadeEscolhinda.getId() + "/contribuinte/"
					+ contribuinte + "/usuario/" + usuarioLogado.getId() + "/" + uuid.toString().toUpperCase();
			File diretorio = new File(localArquivo);
			diretorio.mkdirs();
			File file = new File(localArquivo, uploadedFile.getFileName());
			OutputStream out = new FileOutputStream(file);
			out.write(uploadedFile.getContents());
			out.close();
			salvarArquivo(arquivoImportado, uploadedFile, entidadeEscolhinda, file.length(), usuarioLogado,
					localArquivo + "/" + uploadedFile.getFileName());
			mensagem("Arquivo " + arquivoImportado.getFile().getFileName() + " foi importado para o sistema.", 2);
		} catch (IOException e) {
			logger.error(e.getMessage());
			mensagem(e.getMessage(), 1);
		}

	}

Já faz um tempo que não estou trabalhando com Primefaces e JSF mas lembro que no web.xml tinha que configurar um filter, ex:

 <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>512000</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

Mostrou estes erros:

Importei estes JAR, pois via na internet, que tinha que importar:

18:15:49,911 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."desif.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."desif.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "desif.war"
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.8.0_101]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.8.0_101]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_101]
Caused by: java.lang.RuntimeException: JBAS018757: Error getting reflective information for class org.primefaces.webapp.filter.FileUploadFilter with ClassLoader ModuleClassLoader for Module "deployment.desif.war:main" from Service Module Loader
	at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:72) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58)
	at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:107)
	at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:92)
	at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:77)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	... 5 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
	at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.8.0_101]
	at java.lang.Class.privateGetDeclaredFields(Unknown Source) [rt.jar:1.8.0_101]
	at java.lang.Class.getDeclaredFields(Unknown Source) [rt.jar:1.8.0_101]
	at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:68) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	... 10 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory from [Module "deployment.desif.war:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final]
	... 15 more

18:15:49,916 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
    ("core-service" => "management"),
    ("management-interface" => "http-interface")

Veja o erro manu, falta a lib do fileupload:

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>

NO pom.xml do projeto ?

Isso se usa maven no pom.xml se não usa add no classpath da aplicação, notei que você tinha adiocnado ela, mas também percbi que as referências das libs apontam para uma pasta Downloads o que acredito que esteja usando o maven e as mesmas libs estejam no classpth, ai da conflito mesmo, certifique-se de usar apenas o maven, se alguma library não baixar da um maven update, depois um mvn install.

@aix, fiz o que você disse mas não adiantou.

Não mostra erro no console

POM e o JAR importado

WEB.xml

O que pode ser ?

ok, mas você continua com exception ou penas o FileUpload que não funciona?

Agora está sem exception.

E o FileUpload não funciona.

Se não me engano o commons-io é required, testa por favor.

  <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
</dependency>

também coloca esse parâmetro de contexto no web.xml

  <context-param>
        <param-name>primefaces.UPLOADER</param-name>
        <param-value>auto</param-value>
    </context-param>

Continua sem funcionar.

Não dá exceção.

Coloca tua declaração do UploadedFile no escopo da classe, ex:

public class SeuController{

private UploadedFile uploadedFile;

// get and set

public void importarArquivo(FileUploadEvent arquivoImportado) {
		try {
			uploadedFile = arquivoImportado.getFile();
                        ...........
}

Seu xhtml:

<p:fileUpload skinSimple="true" label="Upload" fileLimit="1" value="#{seuController.uploadFile}" update="@form" fileUploadListener="#{arquivocontroller.importarArquivo}" uploadLabel="Enviar" cancelLabel="Cancelar" />

Não funcionou

Meu controller

package org.desif.controller.desif.arquivo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.desif.controller.desif.declaracao.DeclaracaoController;
import org.desif.enuns.StatusProcessoImportacaoEnum;
import org.desif.enuns.TipoArquivoEnum;
import org.desif.enuns.TipoErroEnum;
import org.desif.model.desif.ConfiguracaoEntity;
import org.desif.model.desif.EmpresaEntity;
import org.desif.model.desif.EntidadeEntity;
import org.desif.model.desif.federal.ErroAlertaEntity;
import org.desif.model.importacao.ArquivoEntity;
import org.desif.model.importacao.IdentificacaoEntity;
import org.desif.model.publico.UsuarioEntity;
import org.desif.repository.desif.ConfiguracaoRepository;
import org.desif.repository.desif.EmpresaInscricaoMunicipalRepository;
import org.desif.repository.desif.EmpresaRepository;
import org.desif.repository.desif.federal.CosifRepository;
import org.desif.repository.desif.federal.ErroAlertaLogRepository;
import org.desif.repository.desif.federal.ErroAlertaRepository;
import org.desif.repository.desif.federal.MunicipioRepository;
import org.desif.repository.desif.federal.ServicoRemuneradoRepository;
import org.desif.repository.desif.federal.TarifaBancariaRepository;
import org.desif.repository.desif.federal.TipoDependenciaRepository;
import org.desif.repository.desif.federal.TipoRegistroCampoRepository;
import org.desif.repository.desif.federal.TipoRegistroRepository;
import org.desif.repository.desif.federal.TituloRepository;
import org.desif.repository.desif.municipal.ArredondamentoRepository;
import org.desif.repository.desif.municipal.CompensacaoRepository;
import org.desif.repository.desif.municipal.ConsolidacaoRepository;
import org.desif.repository.desif.municipal.EntregaDeclaracaoRepository;
import org.desif.repository.desif.municipal.ErroAlertaLogMunicipioRepository;
import org.desif.repository.desif.municipal.IncentivoConsolidacaoRepository;
import org.desif.repository.importacao.AnaliticoRepository;
import org.desif.repository.importacao.ApuracaoTributoRepository;
import org.desif.repository.importacao.ArquivoRepository;
import org.desif.repository.importacao.DependenciaRepository;
import org.desif.repository.importacao.ErroAlertaCampoEncontradoRepository;
import org.desif.repository.importacao.ErroAlertaEncontradoRepository;
import org.desif.repository.importacao.IdentificacaoRepository;
import org.desif.repository.importacao.PgccRepository;
import org.desif.repository.importacao.PgccServicosRemuneravelRepository;
import org.desif.repository.importacao.PgccTarifaRepository;
import org.desif.repository.municipal.ExigeContaDespesaRepository;
import org.desif.repository.municipal.TributacaoMunicipalRepository;
import org.desif.util.DesIfUtil;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@ManagedBean(name = "arquivocontroller", eager = true)
@ViewScoped
public class ArquivoController extends DeclaracaoController {

	private static final long serialVersionUID = -8361811250255953137L;
	private final static Logger logger = LoggerFactory.getLogger(ArquivoController.class);
	private UploadedFile uploadedFile;

	public UploadedFile getUploadedFile() {
		return uploadedFile;
	}

	public void setUploadedFile(UploadedFile uploadedFile) {
		this.uploadedFile = uploadedFile;
	}

	public void importarArquivo(FileUploadEvent arquivoImportado) {
		if (validacaoEntidadeContribuinte()) {
			return;
		}
		try {
			uploadedFile = arquivoImportado.getFile();
			UUID uuid = UUID.randomUUID();
			UsuarioEntity usuarioLogado = new UsuarioEntity();
			usuarioLogado.setId(1l);
			EntidadeEntity entidadeEscolhinda = entidadeRepository.retornaClassePeloNome(entidade);
			String localArquivo = "C:/sistema_des_if_netsoft/municipio/" + entidadeEscolhinda.getId() + "/contribuinte/"
					+ contribuinte + "/usuario/" + usuarioLogado.getId() + "/" + uuid.toString().toUpperCase();
			File diretorio = new File(localArquivo);
			diretorio.mkdirs();
			File file = new File(localArquivo, uploadedFile.getFileName());
			OutputStream out = new FileOutputStream(file);
			out.write(uploadedFile.getContents());
			out.close();
			salvarArquivo(arquivoImportado, uploadedFile, entidadeEscolhinda, file.length(), usuarioLogado,
					localArquivo + "/" + uploadedFile.getFileName());
			mensagem("Arquivo " + arquivoImportado.getFile().getFileName() + " foi importado para o sistema.", 2);
		} catch (IOException e) {
			logger.error(e.getMessage());
			mensagem(e.getMessage(), 1);
		}
	}

Da uma olhada aqui então, encontrei este tutorial da algaworks que contém tudo desse componente, é algum detalhe que ainda não vimos, pois eu já utilizei ele em aguns projetos aqui an empresa e funcionou bem.

da uma lida ai, se não funcionar, coloca teu projeto la no github para eu ver.

Pode me passar seu email ?

Te envio um zip

Mesmo com o exemplo simples, do blog que me enviou não está funcionando.

Ao iniciar o server, ele mostra estes erros no console:

@aix

16:09:37,349 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("add") failed - address: ([
    ("core-service" => "management"),
    ("management-interface" => "http-interface")
]) - failure description: {"JBAS014671: Failed services" => {"jboss.serverManagement.controller.management.http" => "org.jboss.msc.service.StartException in service jboss.serverManagement.controller.management.http: JBAS015811: Failed to start the http-interface service
    Caused by: java.lang.RuntimeException: java.net.BindException: Address already in use: bind
    Caused by: java.net.BindException: Address already in use: bind"}}

Segundo:

16:09:21,627 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.serverManagement.controller.management.http: org.jboss.msc.service.StartException in service jboss.serverManagement.controller.management.http: JBAS015811: Failed to start the http-interface service
	at org.jboss.as.server.mgmt.UndertowHttpManagementService.start(UndertowHttpManagementService.java:258) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.8.0_101]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.8.0_101]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_101]
Caused by: java.lang.RuntimeException: java.net.BindException: Address already in use: bind
	at org.jboss.as.domain.http.server.ManagementHttpServer.start(ManagementHttpServer.java:156)
	at org.jboss.as.server.mgmt.UndertowHttpManagementService.start(UndertowHttpManagementService.java:224) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	... 5 more
Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) [rt.jar:1.8.0_101]
	at sun.nio.ch.Net.bind(Unknown Source) [rt.jar:1.8.0_101]
	at sun.nio.ch.Net.bind(Unknown Source) [rt.jar:1.8.0_101]
	at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) [rt.jar:1.8.0_101]
	at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) [rt.jar:1.8.0_101]
	at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) [rt.jar:1.8.0_101]
	at org.xnio.nio.NioXnioWorker.createTcpConnectionServer(NioXnioWorker.java:175)
	at org.xnio.XnioWorker.createStreamConnectionServer(XnioWorker.java:242)
	at org.jboss.as.domain.http.server.ManagementHttpServer.start(ManagementHttpServer.java:135)
	... 6 more

ou a porta já esta sendo usada por outro serviço, ou o servidor está preso na memória do windows e você está subindo novamente. Faça assim: mate as instâncias java que vc tem pelo gerenciador de tarefas do windows e start novamente.

Te enviei o email.