Contexts & Dependency Injection for Java

CDI Ecosystem

Because CDI goes well beyond standard Java EE, you'll find on this page resources of the CDI open source ecosystem. These are project or frameworks based on CDI to add high level features to your project or tools to help you develop your own CDI integration or framework. If you think a tool or framework is missing here. Feel free to contribute to this page.

Apache DeltaSpike

DeltaSpike consists of a core module and a number of optional modules for providing additional enterprise functionality to your applications.

The modules include features for enhanced security with type-safe control over method invocations, integration with schedulers, injection of CDI objects into validators, and a transactional context and scope.

DeltaSpike also provides boot and shutdown control over CDI containers in Java SE applications.

check Apache DeltaSpike website

Ocelotds

Ocelotds is the open source CDI server-based Java remoting and web messaging technology that enables developers to easily connect to back-end data and push data in real-time to Javascript applications for more responsive rich Internet application (RIA) experiences.

Available for any javascript framework like Angularjs, Knockout... Ocelotds gives the rapidly growing Javascript developer community access to the powerful remoting and messaging technologies.

Other great features in Ocelotds:

  • Java EE standard support (CDI, Bean validation, ...)
  • Javascript code completion with gulp features
  • Easily connect Javascript applications built using any framework to existing Java server logic
  • Real-time server push over Websocket
  • Full pub/sub messaging that extends existing messaging infrastructure (topic paradigm)
  • Cache features in browser. Caching and eviction by server side

check Ocelotds website

Errai

Errai brings the CDI programming model to the browser using cross-compilation to JavaScript.

It is a general-purpose web framework with a focus on type-safety and standard-conform HTML5 templates. Errai allows your team to share Java EE code between the client and the server and reuse functionality across application layers.

check Errai website

Angular Beans

Angular Beans is a powerful web framework to use AngularJS in Java EE through CDI.

Angular Beans use the power of both AngularJS and CDI to provide a lightweight but features-rich framework:

  • Transform CDI beans into injectable AngularJS services,
  • Bean validation support
  • Built-in internationalization support from server-side property files,
  • Events binding (angularJS events -> CDI events / CDI events -> angularJS events),
  • SockJS support (with auto detection) .
  • Rest style, Event driven files upload end point .
  • And a lot more...

check AngularBeans website

VRaptor

VRaptor delivers high productivity to your Java Web applications on top of CDI. VRaptor is an opensource MVC framework with a large developers and users community

Last version (VRaptor 4) is based on CDI 1.1 while the previous version can be used with CDI 1.0

check VRaptor website

PicketLink

PicketLink is an Application Security Framework for Java EE applications.

It provides features for authenticating users, authorizing access to the business methods of your application, managing your application's users, groups, roles and permissions, plus much more. It integrates in a portable way with Java EE thanks to CDI.

check PicketLink website

Vaadin CDI

Vaadin is a Java EE compatible UI component framework for building rich HTML5 web applications. on. Vaadin CDI supports modern Java EE servers.

Using Vaadin CDI extension these components become CDI managed beans. This opens the great world of CDI for Vaadin developers and simplifies the usage of other Java EE technologies.

It provides custom scopes, roles, access control, CDI events and navigation. Vaadin CDI supports modern Java EE servers.

check Vaadin CDI addons

Spring Data

spring Data makes it easy to use new data access technologies, such as non-relational databases, map-reduce frameworks, and cloud based data services.

It also provides improved support for relational database technologies. This is an umbrella project which contains many sub-projects that are specific to a given database.

All sub-projects provide support for CDI via a portable extension.

check Spring Data website

JBoss Forge

JBoss forge is a productivity tool helping you generating and managing boilerplate code in your Java EE and Maven project

It's a new code generation tool that lets you the control of generated code. CDI is everywhere in Forge generated projects

check Forge website

Arquillian

Arquillian is an innovative and highly extensible testing platform for the JVM that enables developers to easily create automated integration, functional and acceptance tests for Java middleware.

It provides extra-light containers to test your CDI code on major implementations or full container to test your CDI code against major Java EE application servers

check Arquillian website

Apache Camel CDI

Apache Camel is an open source Java framework that focuses on making integration easier and more accessible to developers. It does this by providing:

  • concrete implementations of all the widely used EIPs
  • connectivity to a great variety of transports and APIs
  • easy to use Domain Specific Languages (DSLs) to wire EIPs and transports together

Camel CDI provides a Camel DSL for CDI

check Camel CDI project

Metrics CDI

Metrics provides a powerful toolkit of ways to measure the behavior of critical components in your production environment.

Metrics CDI provides support for the Metrics annotations in CDI enabled environments. It implements the contract specified by these annotations with the following level of functionality:

  • Intercept invocations of bean constructors, methods and public methods of bean classes annotated with @Counted, @ExceptionMetered, @Metered and @Timed,
  • Create Gauge and CachedGauge instances for bean methods annotated with @Gauge and @CachedGauge respectively,
  • Inject Counter, Gauge, Histogram, Meter and Timer instances,
  • Register or retrieve the produced Metric instances in the resolved MetricRegistry bean,
  • Declare automatically a default MetricRegistry bean if no one exists in the CDI container.

check Metrics website and Metrics CDI project