[JAVA / MAVEN] – Projeto de exemplo de um Archetype em Java (How to create archetype – project sample)

add_archetype

Helpdev Archetype

Esse projeto pode ser utilizado como exemplo para criar seu próprio archetype, ele contém configurações de como criar uma classe com nome dinâmico, como criar variáveis para ser substituídas no código, importar README, .gitignore etc.

Especificamente nesse projeto o archetype foi definido para criar uma estrutura de pastas padronizados, criar uma Main class com o nome do projeto tudo dentro do package adequado ( group id + artifact id ), de acordo com necessidades de projetos em produção ele também cria uma pasta externa de properties com um arquivo contendo o artifact id como nome.

https://github.com/gbzarelli/archetype-java

https://github.com/gbzarelli/archetype-spring

Java / JVM – Trabalhando com a Variável de Ambiente LD_LIBRARY_PATH

java

A variável de ambiente LD_LIBRARY_PATH informa aos aplicativos do Linux, como a JVM, onde localizar bibliotecas compartilhadas quando elas estão localizadas em um diretório diferente do diretório especificado na seção do cabeçalho do programa.

As bibliotecas compartilhadas para o SDK estão em /usr/java7/jre/lib// e /usr/java7/jre/lib//j9vm, em que é um dos seguintes:
Linux PPC de 32 bits: ppc
Linux PPC de 64 bits: ppc64
Linux 390 de 31 bits: s390
Linux 390 de 64 bits: s390x
Linux de 32 bits: i386
Linux de 64 bits: amd64
Os programas ativadores do SDK, incluindo java, javac e jar procuram esses diretórios automaticamente. O diretório-pai é geralmente /usr/java7/, mas os pacotes que empacotam o Java™ podem usar diretórios diferentes. Este caminho já está configurado pelos programas ativadores deJava tais como java, javac ou jar.

Configure LD_LIBRARY_PATH se uma das seguintes condições se aplicar:
Você estiver utilizando outras bibliotecas compartilhadas (incluindo as bibliotecas nativas JNI que você utiliza ou desenvolve). Configure LD_LIBRARY_PATH para incluir o diretório ou diretórios que contêm as bibliotecas.
Você estiver usando a API de Chamada de JNI para chamar o código Java a partir do aplicativo C/C++. Configure LD_LIBRARY_PATH para incluir os diretórios que contém as bibliotecas JVM além dos diretórios que contêm suas próprias bibliotecas.

Fonte: https://www.ibm.com/support/knowledgecenter/pt-br/SSYKE2_7.0.0/com.ibm.java.lnx.70.doc/user/setlpath.html

Java – Retirando a implementação do SLF4J de dependências

java Se você estiver utilizando alguma biblioteca em seu sistema que contenha alguma implementação do SLF4J , você pode retirar a mesma utilizando a dependência do SLF4J ‘slf4j-nop’ (non-operation). Um dos motivos para retira-lo é estar logando na System.out do sistema informações de log. Para retirar basta incluir a seguinte dependência:

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
        </dependency>

Java / .Net – SourceAFIS – Biblioteca de reconhecimento de impressões digitais – (Fingerprint recognition library)

fingerprint

SourceAFIS

for Java and .NET

SourceAFIS é um algoritmo que reconhece impressões digitais humanas. Ele pode comparar duas impressões digitais 1: 1 ou pesquisar um grande banco de dados 1: N para impressão digital correspondente. Ele pega imagens de impressões digitais na entrada e produz uma pontuação de similaridade na saída. A pontuação de similaridade é então comparada com o limite de correspondência personalizável.

O algoritmo SourceAFIS tem duas implementações de código aberto quase idênticas em Java puro e .NET puro. API SourceAFIS é projetado para máxima simplicidade e facilidade de uso por desenvolvedores de aplicativos. Precisão e velocidade de correspondência são suficientes para a maioria das aplicações..

Algorithm

O algoritmo SourceAFIS é o resultado do design de algoritmo independente. Não apenas copia algum algoritmo de livro didático. No entanto, ele empresta muito de outros correspondentes de impressões digitais de código aberto. Ele oferece precisão decente e velocidade de correspondência surpreendentemente alta.

O SourceAFIS, sendo o opensource, fornece um recurso muito raro de transparência de algoritmo que expõe estruturas de dados intermediárias computadas pelo algoritmo durante a correspondência de impressões digitais, o que abre a porta para aplicativos interessantes que antes eram impossíveis com os correspondentes comerciais.

A implementação open source do algoritmo combinado com a licença permissiva pode ser explorada para o desenvolvimento de modificações customizadas interessantes no algoritmo por qualquer um com algum tempo de sobra. Alterações no algoritmo também podem ser implementadas pelo autor do SourceAFIS como um projeto de desenvolvimento customizado e acessível.

https://sourceafis.machinezoo.com/

Java – Projeto Spring Security com JWT: Autenticação e Autorização por JDBC no MySQL (Spring Security Project with JWT: Authentication and Authorization by JDBC in MySQL)

spring_securityA ideia desse post não é realizar um passo a passo de como implementar o Spring Security, mas sim compartilhar um projeto bem simples e auto explicativo que desenvolvi. Esse projeto utiliza o Spring Security com autenticação JWT buscando seus usuários em um banco de dados em MySQL / MariaDB com senhas criptografadas em BCrypt.

https://github.com/gbzarelli/spring-jwt-auth-jdbc

Java EE – Problemas com deploy de aplicações no Glassfish 5 (Web Service deployment into Glassfish error)

glassfish

Servlet [ParticipantPortTypePortImpl] and Servlet [CoordinatorPortTypePortImpl] have the same url pattern: [/WSAT10Service]. Related annotation information: annotation [@javax.jws.WebService(wsdlLocation=/wsdls/wsat10/wsat.wsdl, name=, portName=CoordinatorPortTypePort, endpointInterface=com.sun.xml.ws.tx.at.v10.types.CoordinatorPortType, serviceName=WSAT10Service, targetNamespace=http://schemas.xmlsoap.org/ws/2004/10/wsat)] on annotated element [class com.sun.xml.ws.tx.at.v10.endpoint.CoordinatorPortTypePortImpl] of type [TYPE]

Esse erro ocorre pois em suas dependências no projeto há algo em conflito com o Glassfish, normalmente bibliotecas do próprio glassfish, basta remove-las e utilizar somente bibliotecas referente ao WebService. Exemplo:

<dependencies>
<!--      
       Não utilizar essa dependência! 
        <dependency>
            <groupId>org.glassfish.metro</groupId>
            <artifactId>webservices-rt</artifactId>
            <version>2.3</version>
            <scope>compile</scope>
        </dependency>
-->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
   
</dependencies>