O "quase transparente" ocorre uma vez que essa modalidade de distribuição impõe algumas regras de segurança. Alguns recursos, como o uso de I/O, exigem que o JAR seja assinado (sign) com um certificado, garantindo ao usuário a autenticidade da aplicação.
O kit de desenvolvimento Java, disponibiliza o jarsigner. Um programa que cria e verifica certificados em arquivos JAR. A boa notícia é que projetos desenvolvidos com o Maven, também podem contar com esse recurso!
Através do plugin Jarsigner, é possível indicar ao Maven que durante o build do projeto o JAR deverá ser assinado com um determinado certificado. A seguir o trecho do pom.xml com as definições do Maven para assinar o JAR:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" <!-- definicoes do artefato e dependencias omitidas --> < build > < plugins > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-jarsigner-plugin</ artifactId > < version >1.2</ version > < executions > < execution > < id >sign</ id > < phase >package</ phase > < goals > < goal >sign</ goal > </ goals > </ execution > </ executions > < configuration > < keystore >/home/yaw</ keystore > < alias >key</ alias > < storepass >mykeypass</ storepass > < keypass >mykeypass</ keypass > </ configuration > </ plugin > </ plugins > </ build > </ project > |
Note o trecho que configuraç a execução do plugin, a tag phase indica que o JAR do projeto deve ser assinado durante a fase package do build. Outro detalhe é que nas configurações indicamos as propriedades do certificado:
- keystore: local (diretório) aonde a chave foi armazenada;
- alias: nome da chave;
- storepass e keypass: senha de acesso da chave;
Caso a aplicação, distribuída pelo Java Web Start, seja assinado as dependências também devem ser assinadas. Ou seja, todos os JARs complementares ao projeto também devem ser assinados. Com o jarsigner podemos assinar JARs terceiros, o
mesmo vale para o plugin do Maven.
Na YaW desenvolvemos alguns projetos para demonstração que utilizam essa abordagem. Veja e execute o projeto Aplicação Desktop com Swing e JPA/Hibernate. Saiba mais detalhes sobre o Java Web Start no tutorial online da Oracle.
Na YaW desenvolvemos alguns projetos para demonstração que utilizam essa abordagem. Veja e execute o projeto Aplicação Desktop com Swing e JPA/Hibernate. Saiba mais detalhes sobre o Java Web Start no tutorial online da Oracle.
@edermag