Tive esse problema em um Windows Server 2008 depois de uma atualização de versão do openfire.
Depois de atualizar, já não funcionou mais, e dava diversos erros de conexão com o Mysql. Reinstalei e funcionou, mas ao reiniciar o serviço já não funcionava mais
Sempre que eu instalava o openfire era necessário adicionar na configuração do mysql a string
‘useTimezone=true&serverTimezone=UTC’
Mas depois que reiniciava a máquina, em cada inicialização do serviço, pedia as configurações de novo, tendo que reinstalar em todas as vezes.
Descobri que se deixasse o arquivo openfire.xml apenas com 1 configuração depois do nome do banco ( jdbc:mysql://127.0.0.1:3306/openfire?xxxxxxx=xxx )ele considerava a configuração, mas sempre dava algum erro novo (ou de SSL ou de Timezone ou forma de autenticação, etc…) que impossibilitava que o serviço subisse
E se deixasse toda a string necessária pra funcionar
jdbc:mysql://127.0.0.1:3306/openfire?allowPublicKeyRetrieval=true&useTimezone=true&serverTimezone=UTC&useSSL=false
quando iniciasse o openfire, pedia pra configurar tudo do zero, como se fosse a primeira vez, porém quando configurava, dava erro ao salvar o arquivo openfire.xml porque aparecia que estava em uso.
Descobri que o openfire não considerava nada que tem depois do caractere &
Então ao invés de salvar o arquivo openfire.xml usando só o ‘&’ tive que colocar '& a m p ; ’ (Tive que colocar com espaço pois a página interpreta os caracteres e não mostra) depois, então a string era assim
jdbc:mysql://127.0.0.1:3306/openfire?allowPublicKeyRetrieval=true&useTimezone=true&serverTimezone=UTC&useSSL=false
e ficou assim (Remover os espaços em branco e deixar tudo sem espaçamento):
jdbc:mysql://127.0.0.1:3306/openfire?allowPublicKeyRetrieval=true & a m p ; useTimezone=true & a m p ; serverTimezone=UTC & a m p ; useSSL=false
Aí funcionou, reiniciando o serviço, reiniciando a máquina, o openfire considera toda a linha e funciona sem dar nenhum erro