Rich:paint2d e a4j:poll

Estou tentando fazer tipo um velocímetro com os componentes rich:paint2d para desenhar e a4j:poll para dar um reRender no painel em que o velocímetro é desenhado. E aí está o problema, o a4j:poll nao redesenha a imagem, já tentei utilizar mediaoutput do ajax e tbm não funcionou. Comecei faz pouco tempo a trabalhar com essas tecnologias e então não sei se estou fazendo alguma coisa errada. Se alguém puder me ajudarrr…

Página:


<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">

	<a4j:region>
		<h:form>
			<a4j:poll id="poll" interval="1000" enabled="true" 
				reRender="chartImage, poll"  />
		</h:form>
	</a4j:region>
	
	
	<h:form>
		<a4j:outputPanel id="chartImage">
	
			  <rich:paint2D id="painter" width="300" height="160" cacheable="false" 
            data="#{paintData}" format="png" paint="#{paintBean.paint}" />
		</a4j:outputPanel>
	</h:form>
  

</ui:composition>

Bean:

	public class PaintBean extends JPanel  {

	  	
				
	   private int valorYInicial;
	    private int valorXInicial;
	    public  int valorAtual = 25;
	   	private int valorXImagem;
	    private int valorYImagem;
	    private int tamanhoPonteiro;
	    private int xcenter, ycenter;
	    
	    int lastxs = 0, lastys = 0, lastxm = 0, lastym = 0, lastxh = 0, lastyh = 0;
	    private int i = valorAtual;
	    private int s = valorAtual;
	    private boolean flagI = false;
	    public static int valorPonteiro = 25;

	   

	    
	    public void paint(Graphics2D g, Object o) {
	 
	    	int xs, ys;

	        Graphics2D g2d = (Graphics2D) g;
	        Image im;
       
	        im = (new ImageIcon(getClass().getResource("/imagens/correnteTotal1.jpg"))).getImage();

	        tamanhoPonteiro = 45;

	        xcenter = 11;
	        ycenter = 71;

	        valorXImagem = 85;
	        valorYImagem = 130;

	        valorXInicial = 0;
	        valorYInicial = 0;

	        xs = (int) (Math.cos(s * 3.14f / 30 - 3.14f / 2) * tamanhoPonteiro + xcenter);
	        ys = (int) (Math.sin(s * 3.14f / 30 - 3.14f / 2) * tamanhoPonteiro + ycenter);

	        g.setColor(Color.black);

	        g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);

	        g2d.setBackground(Color.BLACK);

	        g2d.drawImage(im, valorXInicial, valorYInicial, valorXImagem, valorYImagem, this);

	        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
	                RenderingHints.VALUE_ANTIALIAS_ON);

	        // draw 2D line using stroke
	        float dashes[] = {1}; // specify dash pattern

	        g2d.setStroke(new BasicStroke(1.3f, BasicStroke.JOIN_ROUND,
	                BasicStroke.JOIN_ROUND, 1, dashes, 0));

	        g2d.setColor(Color.WHITE);
	        g2d.drawLine(xcenter, ycenter, xs, ys);

	        lastxs = xs;
	        lastys = ys;
	    }

	   
    public void redesenhar (){
    	GenericDAO genericDAO = new GenericDAO();
		List<Equipamento> result = genericDAO.findAllEquipamento();
		for (Equipamento equipamento: result) {
			valorAtual = equipamento.getTempo();
			}
		repaint();
		
		}
    	
    }