Bom dia a todos… Estou com um problema para ler uma chave do manifest.mf. Eu tenho uma aplicação cliente-servidor, na qual eu preciso ler a versão de ambos. Resolvi então colocar a versão como uma chave no manifest.mf. No caso do cliente, que é um arquivo jar foi fácil:
public String buscaVersaodoCliente(){
try {
Class cls = Class.forName ( "com.sismed.principal.IWG2" );
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();
JarFile jar = new JarFile ( new File(loc.getFile()) );
Manifest manifest = jar.getManifest();
Attributes attrs = (Attributes) manifest.getMainAttributes();
String versaoCliente = attrs.getValue("Specification-Version");
return versaoCliente;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "Impossível detectar a versão";
}
Note que no caso é necessário buscar a classe principal do programa: no caso, IWG2.class, e passar o path de onde ela está…
Agora, no caso do servidor, o arquivo é do tipo war, logo não tem classe principal. Daí não tem jeito de eu preencher a variavel cls citada acima para ler o manifest dele… Como faço? Me disseram que pode-se usar o web-xml para guardar a versão e usar um servlet pra ler… Essa é a forma correta de se fazer em se tratando de arquivo war? Ou devo usar o manifest?