JPA EntityManagerFactory no JSF

Vou ter dor de cabeça se eu utilizar uma classe como a abaixo para obter
a EntityManagerFactory do JPA no JSF??

public class JPAUtil {

    private static EntityManagerFactory emf;

    static {
        initializeEntityManagerFactory();
    }

    private static void initializeEntityManagerFactory(){
        try {
            emf = Persistence.createEntityManagerFactory("myPU");
        } catch ( Throwable t ){
            t.printStackTrace();
        }
    }
    
    public static EntityManager getEntityManager(){
        if (emf == null ) {
            initializeEntityManagerFactory();
        }
        return emf.createEntityManager();
    }

    public static EntityManagerFactory getEntityManagerFactory() {
        return emf;
    }

    public static void shutdown(){
        emf.close();
    }
}

vai ^^

é sempre bom na hora de criar a factory, colocar o synchronized…

eu faria + ou - assim

[code]public class JPAUtil {

private static EntityManagerFactory emf;   

static {   
    getEntityManagerFactory();   
}
   
public static EntityManager getEntityManager(){   
    return getEmf.createEntityManager();   
}   

public static synchronized EntityManagerFactory getEntityManagerFactory() {   
    if (emf == null) {
       try { 
          emf = Persistence.createEntityManagerFactory("myPU");   
       } catch ( Throwable t ){   
          t.printStackTrace();   
       } 
    }
    return emf;
}   

public static void shutdown(){   
    if(emf != null) {
        emf.close();
        emf = null;
    }
}   

} [/code]

[quote=Lavieri]vai ^^

é sempre bom na hora de criar a factory, colocar o synchronized…

eu faria + ou - assim

[code]public class JPAUtil {

private static EntityManagerFactory emf;   

static {   
    getEntityManagerFactory();   
}
   
public static EntityManager getEntityManager(){   
    return getEmf.createEntityManager();   
}   

public static synchronized EntityManagerFactory getEntityManagerFactory() {   
    if (emf == null) {
       try { 
          emf = Persistence.createEntityManagerFactory("myPU");   
       } catch ( Throwable t ){   
          t.printStackTrace();   
       } 
    }
    return emf;
}   

public static void shutdown(){   
    if(emf != null) {
        emf.close();
        emf = null;
    }
}   

} [/code][/quote]

Mas eu preciso criar mais que uma EntityManagerFactory? e a partir dela eu crio
as EntityManagers?

Esqueci de dizer, estou precisando controlar o EMF no braço pq vou usar o Tomcat,
e ele não tem controle de IoC.