Mac: JSF: por que os aplicativos da Web JSF em estágio de desenvolvimento nem sempre captam alterações de componentes compostos?

Mac OS X: Yosemite 10.10.5
NetBeans8.1beta or NetBeans8.1
Glassfish4.1 or Glassfish4.1.1
Mojarra 2.2.7 or 2.2.12 [2016-08-14 EDIT: or 2.2.8-17]
[EDIT: Primefaces 5.3]

Eu sou um desenvolvedor experiente do NetBeans + JSF, ou seja, sei como deve funcionar e geralmente funciona, mas, por algum motivo, não está mais funcionando corretamente, em um(e apenas um até onde eu sei) Máquina MacBook Pro [EDIT: 14/08/2016 e também em um MacMini com a mesma versão do OS X].

Breve descrição do problema: Alguns dias atrás, enquanto desenvolvia felizmente um grande aplicativo da Web JSF / Primefaces, descobri que, após algumas recargas de páginas complexas do JSF / Primefaces, eu estava trabalhando para parar de atualizar / refletir as alterações que fiz (e salvei) no composto componentes. Descobri, no entanto, que se eu esperar alguns minutos, eu poderia executar a recarga novamente ok, por algumas vezes, refletindo as alterações do CC, até que "ficasse preso" novamente.

Acontece, até onde sei, apenas na minha principal máquina de desenvolvimento que é um MacBook Pro 15 "(macbookpro11,3 Mid2014.).

[EDIT: 14/08/2016 Agora reproduzido também em um macmini4,1 Mid2010 executando a mesma versão do OS X e executando um (ligeiramente) adaptado* copiado * versão da mesma instalação do NetBeans / GlassFish NB8.1Beta / GF4.1 e com JSF 2.2.8-17]

Não parece importar se:

Eu uso o NetBeans-8.1beta / Glassfish4.1 ou o NetBeans8.1 / Glassfish4.1.1[FORA: o motivo pelo qual estou usando principalmente o NB8.1beta / GF4.1 e não o NB8.1 / GF4.1.1 é explicado em:https://stackoverflow.com/questions/35681181/jsfobjectdb-why-might-deployment-of-a-large-web-app-to-glassfish-4-1-1-take-5]

Eu uso uma instalação NetBeans + Glassfish completamente nova ou uma instalação existente.

Eu uso o JDK1.7 (jdk1.7.0_51.jdk) ou o JDK1.8 (jdk1.8.0_60.jdk) (inclusive para NetBeans / Glassfish e / ou para compilação e execução de código-fonte).

Eu uso um projeto que envolve o Git (o problema ocorreu em um projeto grande, mas desde então eu o reproduzi no mais simples dos projetos sem o Git, ou seja, ele tem algo a ver apenas com o que está acontecendo, detectando alterações de facelets em / build / web / )

Uso Primefaces ou não (posso fazer isso acontecer em um aplicativo JSF muito básico).

Eu uso um recarregamento GET limpo ou um comando de navegador recarregar.

Mas isso NÃO acontece, até onde eu sei, com uma configuração quase idêntica em um MacMini mais antigo (macmini4,1 Mid2010).

[EDIT: 14/08/2016 Sim, também acontece no MacMini se eu recarregar as páginas JSF com bastante frequência no aplicativo da Web grande e completo que estou desenvolvendo, não apenas em um mini aplicativo de teste]

Algumas outras coisas que acho que sei sobre isso:

Isso ocorre com o recurso Implementar ao salvar desativado em todos os casos.

Parece não afetar modelos ou inclusões JSF, apenas afeta componentes compostos.

Não é um problema com o javax.faces.FACELETS_REFRESH_PERIOD (que por padrão para mojarra é 2). Se eu mudar para 0, o problema desaparece (não há armazenamento em cache), mas os tempos de carregamento / recarregamento de páginas JSF grandes e complexas ficam doloridos, em alguns casos minutos em vez de segundos.

Mover de uma página JSF para outra não ajuda.

Não faz diferença qual escopo JSF eu uso.

Isso acontece com um aplicativo implantado na / build / web.

Os carimbos de data e hora dos arquivos XHTML alterados para os componentes compostos estão definitivamente mudando à medida que eu os salvo no NetBeans (eles estão sendo copiados corretamente em / build / web / resources / ...).

Eu não faço nenhuma atualização ou instalação de software do sistema operacional há muitos dias.

Fiz screencasts (não disponíveis aqui) de todo o problema, conforme relatado abaixo.

Experiência com o aplicativo Web muito grande original

Quando eu encontrei o problema, ele estava em um aplicativo Web muito grande. Notei isso com um pequeno componente composto que gera algum texto com uma classe de estilo (para um ícone), que CC foi usada dentro das guias p: accordionPanel e p:. Descobri que depois de recarregar as alterações algumas vezes, ele deixaria de capturá-las. Foi apenas por acidente que descobri que, se eu esperasse muitos minutos, às vezes até 10 minutos, ele "pegaria" a mudança.

Voltei aos meus commits alguns dias, para um momento em que claramente consegui me desenvolver sem nenhum problema, e o problema aconteceu novamente! Eu testei isso muitas vezes, qualquer que seja o problema, ele não está no commit .git (que inclui / nbproject / private, mas nem todas as subpastas de / nbproject / private).

Experiência com um aplicativo da Web de teste Primefaces menor

Eu tentei com um aplicativo da web de teste muito menor com algumas páginas de teste do Primefaces. Consegui reproduzir o problema se recarregasse a página index.xhtml algumas vezes, enquanto alterava um pequeno componente composto de uma linha de implementação usado na página index.html. Então eu achei que tinha que esperar cerca de 10 segundos ou às vezes um minuto inteiro, e então a mudança "pegaria" novamente.

Experiência com um pequeno aplicativo da web principal do JSF

Com um index.xhtml e um único componente composto com uma única palavra h: outputText, poderia ocorrer o problema se eu salvasse o CC e recarregasse o index.xhtml muito rapidamente. Eu não estou falando sobre isso não parecer mudar (porque alguém "bate" no javax.faces.FACELETS_REFRESH_PERIOD)) Eu estou falando sobre isso "travando" para que não capte a mudança no CC depois disso, não importa com que frequência recarrega a página, até que o Ghost in the Machine decida "desbloquear" a si próprio.

Normalmente, eu realmente daria um exemplo ou 'Passos para reproduzir o problema', mas faz pouco sentido fazê-lo;quando movo o projeto de teste de uma máquina (meu MacBook Pro) para outra (o MacMini executando a mesma versão do sistema operacional), o problema desaparece. E posso fazer isso acontecer (na minha principal máquina de desenvolvimento MacBook Pro) com o aplicativo Web NetBeans JSF mais simples possível, com um index.xhtml que inclui um único CC.

[EDIT: 2016-08-14 Na verdade, eu posso reproduzi-lo naquele MacMini executando a mesma versão do sistema operacional, mas só consegui reproduzi-lo até agora com o aplicativo da Web muito grande que estou desenvolvendo, que não pode ser facilmente fornecido a terceiros por testing (e eu precisaria, por exemplo, remover a dependência do banco de dados do ObjectDB e fornecer dados fictícios)]

Sei que normalmente se faz uma pergunta no Stackoverflow, mas as respostas a qualquer uma delas, o que pode me ajudar a avançar, serão apreciadas:

Q0: Alguém experimentou algo semelhante (em um Mac)?

Q1: O que mais posso tentar diagnosticar? Estou sem idéias.

P2: Alguém sabe de algo específico de um MacBook Pro que possa afetar a pesquisa / detecção de alterações nas pastas da compilação / web que possam explicar isso?

P3: Existe alguma coisa sobre como o Facelets e / ou o Glassfish funcionam em conjunto com um aplicativo implantado na / build / web que pode explicar isso?

questionAnswers(1)

yourAnswerToTheQuestion