Annotation-Based Resource Injection in J2EE

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Java 2 Enterprise Edition (J2EE) systems require extensive use of XML deployment descriptors for configuring and accessing external resources, which complicates application development and maintenance, especially in multi-tiered architectures like Web and EJB containers.

Innovation Solution

The introduction of an injection mechanism using annotations and an injection library that separates common injection logic into a reusable module, allowing for resource injection through annotations or deployment descriptors, and providing a unified mechanism for performing injections via Injector and ObjectFactory interfaces, facilitating easier development and maintenance across different components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If XML deployment descriptors are used for configuring and accessing external resources, then resource configuration capability is provided, but application development and maintenance complexity increases

Engineering Contradiction:
Improveresource configuration capabilityVSAvoidapplication development and maintenance complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the configuration mechanism into two parts: standard J2EE deployment descriptors for basic configuration, and a new annotation-based system for resource injection. This segmentation allows developers to use simple annotations for resource access while leaving the complex XML descriptor handling to the container, thus reducing development complexity while maintaining configuration capability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary injection mechanism that sits between the component code and the external resources. Instead of directly configuring resources through complex XML descriptors, developers use simple annotations that are processed by an injection mechanism, which then handles the actual resource configuration and injection, simplifying the development process.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If XML deployment descriptors are extensively used, then resource configuration is achieved, but development time and maintenance effort increase

Engineering Contradiction:
Improveresource configuration capabilityVSAvoiddevelopment time and maintenance effort
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent enables components to self-configure through annotations. The injection mechanism automatically processes annotations and performs resource injection without requiring manual XML descriptor configuration, thereby reducing development time and maintenance effort while maintaining full resource configuration capability.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent allows resource configuration to be declared in advance through annotations during the coding phase, rather than requiring extensive XML descriptor work during deployment. This preliminary action through annotations reduces both development time and maintenance effort while achieving the same resource configuration capability.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If a unified injection mechanism is introduced, then ease of development improves, but system complexity increases

Engineering Contradiction:
Improveease of developmentVSAvoidsystem complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent creates a universal injection mechanism that can handle multiple types of resources (data sources, JDBC connections, EJB references, etc.) through a single annotation-based interface. This universal mechanism simplifies development by providing consistent resource access across different resource types, while the underlying complexity is managed by the container's existing infrastructure.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8060858B2Injection library
Publication Date: 2011.11.15 SAP SE
  • US8060858B2 patent drawing
  • US8060858B2 patent drawing

AI summary

A runtime environment injects an instance of an external resource into an application component to be executed in the runtime environment by first determining an external resource associated with the application component, then selecting from a library of injectors an injector to inject an instance of the application component with an instance of an external resource referenced by the external resource annotation. The selected injector determines the instance of the application component to inject with the instance of the external resource and injects the instance of the application component with the instance of the external resource.