Resgatar objeto com getRowData de um bean em outro bean[Resolvido]

Nao estou conseguindo resgatar o objeto selecionado para enviar para o bean do download
como a lista esta no arquivoBean nao sei como passar para o outro bean.

Bean do Download

@ManagedBean(name = "down")
@RequestScoped
public class DownloadBean {

	
	private StreamedContent arquivoDown;
	
	public DownloadBean()
	{		
		InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("/Aqui a propiedade caminho do objeto retornado com getRowData/");  
        arquivoDown = new DefaultStreamedContent(stream, "Application/.*", "/Aqui a propiedade arquivo do objeto retornado com getRowData/" );
	}
	
	
	public StreamedContent getArquivoDown() {
		return arquivoDown;
	}

	public void setArquivoDown(StreamedContent arquivoDown) {
		this.arquivoDown = arquivoDown;
	}
	
}

Bean do Arquivo

@ManagedBean(name = "arquivo")
@SessionScoped
public class ArquivoBean {

	private Arquivo arqDTO = new Arquivo();
	private ArquivoDAO arqDAO;
	private DataModel<Arquivo> arquivos;
	private UploadedFile fileUP;
		
	public UploadedFile getFileUP() {	
		return fileUP;
	}

	public void setFileUP(UploadedFile fileUP) {
		this.fileUP = fileUP;
	}

	
	public Arquivo getArqDTO() {
		return arqDTO;
	}

	public void setArqDTO(Arquivo arqDTO) {
		this.arqDTO = arqDTO;
	}

	
	public DataModel<Arquivo> getArquivos() throws SQLException {
		if (this.arquivos == null) {
			pesqTodos();
			return arquivos;
		}
		return arquivos;
	}

	public void setArquivos(DataModel<Arquivo> arquivos) throws SQLException {
		if (arquivos != null) {
			this.arquivos = arquivos;
		}else{
			pesqTodos(); 
		}
		
	}
	
	public void seleciona()
	{
		arqDTO = arquivos.getRowData();
	}
	
	public void pesqTodos() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=	arqDAO.listarTodosArquivos();
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
	
	
	public void deletar() throws SQLException, IOException
	{
		//deletar arquivo do banco
		arqDAO = new ArquivoDAO();
		arqDAO.deletar(arqDTO);
		
		this.arquivos = null;
		
		//deletar arquivo do servidor em disco
		java.nio.file.Path paths = Paths.get(arqDTO.getCaminhoArq());
		Files.deleteIfExists(paths.getFileName());
	}
	
	public void pesqNome() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=  arqDAO.listarArquivoNome(arqDTO);
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
	
	public void pesqSetor() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=  arqDAO.listarArquivoSetor(arqDTO);
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
	
	public void pesqCaixa() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=  arqDAO.listarArquivoCaixa(arqDTO);
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
	
	public void pesqAssunto() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=  arqDAO.listarArquivoAssunto(arqDTO);
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
	
	public void pesqData() throws SQLException
	{
		arqDAO = new ArquivoDAO();
		List<Arquivo> lista = new ArrayList<Arquivo>(); 
		lista	=  arqDAO.listarArquivoData(arqDTO);
		arquivos = new ListDataModel<Arquivo>(lista);
		setArquivos(arquivos);
	}
		
	

	public void enviarArquivo() // metodo chamado quando o arquivo acaba de carregar no serverSide  
            throws FileNotFoundException, IOException, SQLException {  
		
		try {
			
	        
	         String diretorio = "I:/SGARQ-Arquivos/";			
			
	        java.nio.file.Path path = Paths.get(diretorio + "/" + arqDTO.getSetor() + "/" + arqDTO.getAssunto() + "/" + arqDTO.getArquivo());
			
	         
	        if (Files.notExists(path.toAbsolutePath())) {
	        	Files.createDirectories(path.toAbsolutePath());
			}
	        
	        Path arqCaminho = Paths.get(fileUP.getFileName());
	        
	        
	        
	        String caminho = diretorio + "/" + arqDTO.getSetor() + "/" + arqDTO.getAssunto() + "/" + arqDTO.getArquivo() + "/" + arqCaminho.getFileName(); 
	          

			arqDTO.setCaminhoArq(caminho);
			
			arqDAO = new ArquivoDAO();
			arqDAO.inserir(arqDTO);

	
			 
			  FileOutputStream fos = new FileOutputStream(caminho);  
			
			  byte[] conteudo = fileUP.getContents();  // daqui pra baixo é somente operações de IO.  
			 
			
	          fos.write(conteudo);  
	          fos.close();  
	        
	        
			FacesMessage msg = new FacesMessage("Sucesso "+ fileUP.getFileName()+" foi salvo no servidor."); // mensagem pra saber se ouve sucesso  
	        FacesContext.getCurrentInstance().addMessage(null, msg);
	
	        arqDTO = new Arquivo();

		} catch (FileNotFoundException e) {
			e.getMessage();
		}catch (IOException e) {
			e.getMessage();
		}
	}
		
              
      

	
	
	public String dataFormatada()
	{
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		if(arqDTO.getData() != null)
			return sdf.format(arqDTO.getData());
			return "";
	}
	
}

download.xhtml

<h:form>
	<p:dataTable value="#{arquivo.arquivos}" var="arq" id="dataTable">
		
		<p:column>
			<f:facet name="header">
				Arquivo
			</f:facet>
			<h:outputText value="#{arq.arquivo}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Assunto
			</f:facet>
			<h:outputText value="#{arq.assunto}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Setor
			</f:facet>
			<h:outputText value="#{arq.setor}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Caixa
			</f:facet>
			<h:outputText value="#{arq.caixa}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Data
			</f:facet>
			<h:outputText value="#{arq.data}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Caminho Servidor
			</f:facet>
			<h:outputText value="#{arq.caminhoArq}" />
		</p:column>
		
		<p:column>
			<f:facet name="header">
				Download
			</f:facet>
			<p:commandButton id="downloadLink" actionListener="#{arquivo.seleciona}" value="Clique Aqui" ajax="false" onclick="PrimeFaces.monitorDownload(start,stop)"  icon="ui-icon-arrowreturnthick-1-s">
				<p:fileDownload value="#{down.arquivoDown}"></p:fileDownload>
			</p:commandButton>	
		</p:column>
		
	<p:column>
		<f:facet name="header">
			Deletar
		</f:facet>
		<p:commandButton value="Clique Aqui" action="#{arquivo.deletar}" actionListener="#{arquivo.seleciona}" update="dataTable" icon="ui-icon-closethick"></p:commandButton>
	</p:column>	
		
	</p:dataTable>
	
	<br/>
	<br/>
	
	
	
	<p:panelGrid columns="3">
	<f:facet name="header">
		Pesquisa por:
	</f:facet>
		<h:outputText value="Arquivo:" />
		<p:inputText value="#{arquivo.arqDTO.arquivo}"></p:inputText>
		<p:commandButton value="Pesquisar" action="#{arquivo.pesqNome}" update="dataTable"></p:commandButton>
	
	
		<h:outputText value="Setor:" />
		<p:inputText value="#{arquivo.arqDTO.setor}"></p:inputText>
		<p:commandButton value="Pesquisar" action="#{arquivo.pesqSetor}" update="dataTable"></p:commandButton>
	
		<h:outputText value="Assunto:" />
		<p:inputText value="#{arquivo.arqDTO.assunto}"></p:inputText>
		<p:commandButton value="Pesquisar" action="#{arquivo.pesqAssunto}" update="dataTable"></p:commandButton>
	
		
		<h:outputText value="Caixa:" />
		<p:inputText value="#{arquivo.arqDTO.caixa}"></p:inputText>
		<p:commandButton value="Pesquisar" action="#{arquivo.pesqCaixa}" update="dataTable"></p:commandButton>
	
		<h:outputText value="Data:" />
		<p:calendar value="#{arquivo.arqDTO.data}" locale="pt" pattern="dd/MM/yyyy"></p:calendar> 
		<p:commandButton value="Pesquisar" action="#{arquivo.pesqData}" update="dataTable"></p:commandButton>
	</p:panelGrid>

</h:form>

<p:dialog modal="true" widgetVar="statusDialog" header="Status" draggable="false" closable="false" resizable="false">
	<p:graphicImage value="/design/ajaxloadingbar.gif"></p:graphicImage>
</p:dialog>

Boa Tarde

:idea: Utilizar no Bean de “destino”:

//Capturando clienteBean //ClienteBean é um Bean do tipo SessionScope //Se fosse request seria .getRequestMap().get("clienteBean"); ClienteBean clienteBean = (ClienteBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("clienteBean");

Fiz isso, porem a variavel do bean (ArquivoBean arquivoBean = …) esta vindo null, ai quando tento resgatar algo que esta no bean ja da erro !

Verificar:

http://www.mkyong.com/jsf2/access-a-managed-bean-from-event-listener-jsf/

http://www.guj.com.br/java/122432-colocar-usuario-na-sessao-jsf

Obs:Você deve atentar ao escopo do seu Bean …

Valeu ai, consegui resolver meu problema.