Eu possuo um persistence.xml configurado e o mesmo utiliza um datasource do próprio servidor de aplicação(no caso um WAS), e este datasource possui um pool de conexões configurado, agora vamos para as duvidas:
1°: este pool de conexões é inicializado no momento em que o WAS é inicializado?
2° em que momento o jpa aloca uma conexão? é quando eu crio meu EntityManager? ou quando eu faco um entitymanager.getTransaction().begin()?
3° caso meu pool exceda o numero de conexões com o banco, ele ira criar mais para atender a demanda, essas conexões a mais que ele criou vão continuar no pool ou serão eliminadas ao serem finalizadas?
1 - Sim
2 - Na primeira requisição
3 - Depende de como está configurado. Normalmente você define um pool inicial ou mínimo (3 conexões, por exemplo) e um máximo (30 conexões, por exemplo). Se o máximo for atingido, também depende da configuração definida, pode-se dar flush e liberar todas ou só as mais antigas, as inativas ou mesmo retornar erro de limite atingido.
Lembre-se que um método de consulta simples, por exemplo, não necessita de uma Transaction para requerer algo da conexão!
Depende da implementação. Como o colega falou na resposta anterior, normalmente se configura um mínimo e um máximo de conexões ativas no pool. Se o número máximo for atingido, pode-se novamente ter n estratégias de implementação.