Java EE 8 MVC (Ozark) mit WildFly und Tomcat


Mit Java EE 8 wird ein actionbasiertes Frontendframework Einzug nehmen. Ozark ist die Referenzimplentierung und kann bereits verwendet werden. Die Spezifikation ist aktuell noch nicht finalisiert und liegt zum Zeitpunkt dieses Eintrags in der "Early Draft Review 2"-Version vor.
Dieser Eintrag zeigt, wie die Referenzimplementierung zu diesem Zeitpunkt auf dem Wildfly (hier wurde Version 10 verwendet) und auf dem Tomcat (hier verwendet Version 8) genutzt werden kann. Das Problem ist, dass Ozark derzeit auf der Jersey JAX-RS-Implementierung basiert. Auf dem Glassfish 4 kann ein Projekt mit Ozark direkt deployed werden. Beim Wildfly, der die RestEasy-Implementierung verwendet, führt dies zu Problemen.

Vorgehensweise Wildfly 10


1. JAX-RS RestEasy Subsystem im Wildfly deaktivieren.

Dazu im WEB-INF-Verzeichnis die Datei jboss-deployment-structure.xml mit folgendem Inhalt anlegen:
<?xml version="1.0" encoding="UTF-8"?>  
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">  
    <deployment>  
       <exclude-subsystems>  
            <subsystem name="jaxrs" />  
        </exclude-subsystems>  
    </deployment>  
</jboss-deployment-structure>    

2. Unterdrückung implizieter Bean-Archive ohne beans.xml

(siehe: https://docs.jboss.org/author/display/WFLY8/CDI+Reference) Dazu im WEB-INF-Verzeichnis die Datei jboss-all.xml mit folgendem Inhalt anlegen:
<jboss xmlns="urn:jboss:1.0">  
    <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/>  
</jboss>

3. Und die Jersey JAX-RS Implementierung hinzufügen und für die jersey-bean-validation die hibernate-validator Biblitohek exludieren.


org.glassfish.jersey.containers:jersey-container-servlet
org.glassfish.jersey.ext.cdi:jersey-cdi1x
org.glassfish.jersey.ext:jersey-bean-validation (hibernate-validator for this dependency)

Dependencies im Maven-POM-File:
<dependencies>
	<dependency>
		<groupId>javax</groupId>
		<artifactId>javaee-api</artifactId>
		<version>7.0</version>
		<scope>provided</scope>
	</dependency>

	<dependency>
		<groupId>javax.mvc</groupId>
		<artifactId>javax.mvc-api</artifactId>
		<version>1.0-edr2</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.ozark</groupId>
		<artifactId>ozark</artifactId>
		<version>1.0.0-m02</version>
	</dependency>

	<dependency>
		<groupId>org.glassfish.jersey.containers</groupId>
		<artifactId>jersey-container-servlet</artifactId>
		<version>2.23.1</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.ext.cdi</groupId>
		<artifactId>jersey-cdi1x</artifactId>
		<version>2.23.1</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.ext</groupId>
		<artifactId>jersey-bean-validation</artifactId>
		<version>2.23.1</version>
		<exclusions>
			<exclusion>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-validator</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
</dependencies>

4. Und natürlich muss die beans.xml im WEB-INF-Verzeichnis erstellt werden


<?xml version="1.0"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">
</beans>


Vorgehensweise Tomcat 8


Die Nutzung des MVC-Frameworks auf dem Tomcat ist hingegen ganz leicht. Wir müssen lediglich die Jersey JAX-RS und CDI Bibilotheken hinzufügen. Das war's.
Dependencies im Maven-POM-File:

<dependencies>
	<dependency>
		<groupId>javax</groupId>
		<artifactId>javaee-api</artifactId>
		<version>7.0</version>
		<scope>provided</scope>
	</dependency>

	<dependency>
		<groupId>javax.mvc</groupId>
		<artifactId>javax.mvc-api</artifactId>
		<version>1.0-edr2</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.ozark</groupId>
		<artifactId>ozark</artifactId>
		<version>1.0.0-m02</version>
	</dependency>
 
	<dependency>
		<groupId>org.glassfish.jersey.containers</groupId>
		<artifactId>jersey-container-servlet</artifactId>
		<version>2.23.1</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.ext.cdi</groupId>
		<artifactId>jersey-cdi1x</artifactId>
		<version>2.23.1</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish.jersey.ext</groupId>
		<artifactId>jersey-bean-validation</artifactId>
		<version>2.23.1</version>
	</dependency>
	<dependency>
		<groupId>javax.enterprise</groupId>
		<artifactId>cdi-api</artifactId>
		<version>2.0-EDR1</version>
	</dependency>
	<dependency>
		<groupId>org.jboss.weld.servlet</groupId>
		<artifactId>weld-servlet-core</artifactId>
		<version>3.0.0.Alpha12</version>
	</dependency>
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-validator-cdi</artifactId>
	</dependency>
</dependencies>
Und die beans.xml im WEB-INF Verzeichnis anlegen (s.o.).

Links

Tags: Java EE 8, mvc, ozark
Guido Oelmann     Donnerstag, 1. September 2016 0    1049
@
(Email Adresse wird nicht veröffentlicht)
(kein HTML erlaubt)
Bitte beantworten Sie die einfache mathematische Frage.
  


Keine Kommentare vorhanden.