CDI in JavaSE

CDI – Contexts and Dependency Injection for the Java(tm) EE platform [1] - ist nicht neu und man findet im Netz auch genug gute Einführungen (z.B. [2] und natürlich immer auch bei [3], [4] etc). Möchte man jedoch CDI außerhalb eines Container (AppServer) verwenden, sprich in einer Java SE Umgebung, sucht man schon etwas länger. Bei CDI gibt es u.a. folgende Implementierungen: Weld [5] und OpenWebBeans [6]. Bei der Referenzimplementierung Weld ist die Dokumentation vorbildlich und es gibt auch ein Kapitel [7] welches den Einsatz in einer Java SE Umgebung beschreibt. Solch ein Kapitel sucht man bei OpenWebBeans leider vergebens – das Kapitel an sich existiert schon, leider ohne Inhalt. Zum Glück findet man im SVN jedoch ein SE-Bespiel [8]. Für Version 1.1.2 ersetzt man folgende Zeil:

lifecycle = WebBeansContext.getInstance().getService(ContainerLifecycle.class);

durch

lifecycle = WebBeansContext.currentInstance().getService(ContainerLifecycle.class);

Und der Einsatz von CDI mit OpenWebBeans in einer Java SE Umgebung steht nix mehr im Weg.

Zur Vollständigkeit anbei die Maven pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4\_0\_0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>com.haddouti.maven</groupId>
	<artifactId>cdi-test</artifactId>
	<packaging>jar</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>cdi-test</name>

	<url>http://www.haddouti.com</url>

	<dependencies>

		<!-- CDI Impl: Apache OpenWebBeans -->
		<dependency>
			<groupId>org.apache.openwebbeans</groupId>
			<artifactId>openwebbeans-impl</artifactId>
			<version>1.1.2</version>
		</dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-el\_2.2\_spec</artifactId>
            <version>1.0.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor\_1.1\_spec</artifactId>
            <version>1.0</version>
            <optional>true</optional>
        </dependency>

		<!-- JSR-299 -->		
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi\_1.0\_spec</artifactId>
            <version>1.0</version>
            <optional>true</optional>
        </dependency>

		<!-- JSR-330 -->		
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject\_1.0\_spec</artifactId>
            <version>1.0</version>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-spi</artifactId>
            <version>1.1.2</version>
        </dependency>
        
	</dependencies>
</project>
comment

Comments

arrow_back

Previous

JEE: Arquillian

Next

Nodejs HTTP-Server
arrow_forward