fileUpload + graphicImage enviando multiplos arquivos e carregando-os na mesma página

Bom dia.

Preciso enviar múltiplos arquivos para o bean com o fileUpload e carregá-los na mesma página, consigo fazer isso com um único arquivo (sem criar List) mas quando crio um private List<StreamedContent> os arquivos não são visualizados na página. Será que essa é a forma correta de se fazer?

<h:form enctype="multipart/form-data">
							<p:fileUpload value="#{cadastroPessoaBean.file}"
								label="Procurar..."
								fileUploadListener="#{cadastroPessoaBean.doUpload}" auto="true"
								showButtons="false" update="@form" />
							<h:panelGroup id="companyImage">
								<p:dataTable var="item" value="#{cadastroPessoaBean.imagem}">
									<p:graphicImage value="#{item}" id="imagem" width="200"
										cache="false" rendered="#{item != null}" />
								</p:dataTable>
							</h:panelGroup>
						</h:form>

private UploadedFile file;
private List<StreamedContent> imagem = new ArrayList<>();

public void doUpload(FileUploadEvent event) {
	try {
		// imagem = new DefaultStreamedContent(event.getFile().getInputstream());
		imagem.add(new DefaultStreamedContent(event.getFile().getInputstream()));
		this.setFile(event.getFile());

		System.out.println("Imagem: " + getImagem());
	} catch (IOException e) {
		// Tratamento de exceção.
	}

}

Boa tarde.

Consegui fazer aparecer as imagens em lista na tela logo após o upload(antes de armazenar em diretórios), porém as imagens que aparecem não são necessariamente as imagens que fiz o upload, pelo que vi há uma espécie de "cache "(que mesmo eu dando “restart” no tomcat) onde as imagens aparecem de forma aleatória entre as que eu estou upando no momento e aquelas que fiz o upload antes de restartar o tomcat.
Alguém saberia dizer o que está ocorrendo?

Segue como eu fiz:

.xhtml:

 <h:form>
	<p:fileUpload value="#{cadastroCarroBean.file}" 
		multiple="true" label="Procurar..."
		fileUploadListener="#{cadastroCarroBean.doUpload}" auto="true"
		showButtons="false" update="@form" />

	<ui:repeat value="#{cadastroCarroBean.imageList}" var="image">
		<p:panel header="#{image.id}">
			<p:graphicImage value="#{cadastroCarroBean.productImage}"
				height="100" width="100">
				<f:param name="image_id" value="#{image.id}" />
			</p:graphicImage>
		</p:panel>
	</ui:repeat>

</h:form>

Bean:
private HashMap<Integer, Image> images = new HashMap<Integer, Image>();
public void doUpload(FileUploadEvent event) throws IOException {
	this.setFile(event.getFile());

	cont++;
	System.out.println("Cont: " + cont);
	images.put(cont, new Image(cont, new DefaultStreamedContent(event.getFile().getInputstream())));

}

public StreamedContent getProductImage() throws IOException, SQLException {
	String image_id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
			.get("image_id");

	FacesContext context = FacesContext.getCurrentInstance();

	if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
		return new DefaultStreamedContent();
	}

	else {

		return images.get(Integer.parseInt(image_id)).getImage();

	}
}

public List<Image> getImageList() {
	return new ArrayList<Image>(images.values());
}