or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

core-annotations.mdindex.mdsecurity-annotations.mdsql-annotations.md
tile.json

tessl/maven-jakarta-annotation--jakarta-annotation-api

Jakarta Annotations defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/jakarta.annotation/jakarta.annotation-api@3.0.x

To install, run

npx @tessl/cli install tessl/maven-jakarta-annotation--jakarta-annotation-api@3.0.0

index.mddocs/

Jakarta Annotations

Jakarta Annotations defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies. This API provides annotations for resource injection, lifecycle callbacks, security annotations, and generated code marking.

Package Information

  • Package Name: jakarta.annotation-api
  • Package Type: maven
  • Group ID: jakarta.annotation
  • Artifact ID: jakarta.annotation-api
  • Language: Java
  • Installation:
    <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>3.0.0</version>
    </dependency>

Core Imports

import jakarta.annotation.*;
import jakarta.annotation.security.*;
import jakarta.annotation.sql.*;

For specific annotations:

import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import jakarta.annotation.Resource;
import jakarta.annotation.security.RolesAllowed;
import jakarta.annotation.sql.DataSourceDefinition;

Basic Usage

import jakarta.annotation.*;
import jakarta.annotation.security.*;

@RolesAllowed({"admin", "user"})
public class UserService {
    
    @Resource(name = "jdbc/UserDB")
    private DataSource dataSource;
    
    @PostConstruct
    public void initialize() {
        // Initialization logic after dependency injection
        System.out.println("UserService initialized");
    }
    
    @PreDestroy
    public void cleanup() {
        // Cleanup logic before instance destruction
        System.out.println("UserService cleanup");
    }
    
    @RolesAllowed("admin")
    public void deleteUser(String userId) {
        // Admin-only operation
    }
    
    @PermitAll
    public List<User> getUsers() {
        // Public operation
        return userRepository.findAll();
    }
}

Architecture

Jakarta Annotations provides three main functional areas:

  • Core Annotations (jakarta.annotation): Lifecycle management, resource injection, nullability constraints, code generation markers, and priority ordering
  • Security Annotations (jakarta.annotation.security): Declarative authorization and role-based access control for methods and classes
  • SQL Annotations (jakarta.annotation.sql): Database DataSource configuration and JNDI registration

The annotations are designed to work across the Jakarta EE ecosystem, providing consistent behavior in application servers, dependency injection frameworks, and other Jakarta EE-compliant containers.

Capabilities

Core Annotations

Fundamental annotations for lifecycle management, resource injection, nullability, code generation, and priority ordering. These form the foundation for dependency injection and container-managed components.

@PostConstruct
public void methodName() { }

@PreDestroy  
public void methodName() { }

@Resource(name = "resource/name")
private ResourceType resource;

@Generated(value = "com.example.Generator")
public class GeneratedClass { }

@Priority(100)
public class PriorityComponent { }

@Nonnull
public String nonNullMethod(@Nullable String param) { }

Core Annotations

Security Annotations

Declarative security annotations for role-based access control. These annotations enable method-level and class-level authorization without programmatic security checks.

@RolesAllowed({"admin", "user"})
public class SecureService { }

@DenyAll
public void restrictedMethod() { }

@PermitAll  
public void publicMethod() { }

@RunAs("system")
public class SystemService { }

@DeclareRoles({"admin", "user", "guest"})
public class Application { }

Security Annotations

SQL DataSource Configuration

Annotations for defining and configuring database DataSources with JNDI registration. These annotations enable declarative database configuration without external configuration files.

@DataSourceDefinition(
    name = "java:global/MyDataSource",
    className = "com.mysql.cj.jdbc.MysqlDataSource", 
    url = "jdbc:mysql://localhost:3306/mydb",
    user = "user",
    password = "password"
)
public class DatabaseConfig { }

@DataSourceDefinitions({
    @DataSourceDefinition(name = "java:global/DB1", className = "..."),
    @DataSourceDefinition(name = "java:global/DB2", className = "...")
})
public class MultiDatabaseConfig { }

SQL Annotations