La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JBoss AS & EAP en développement

Présentations similaires


Présentation au sujet: "JBoss AS & EAP en développement"— Transcription de la présentation:

1 JBoss AS & EAP en développement

2 Sommaire Introduction Les modules Les plugins Configuration serveur
Ecosystème Infinispan Troubleshooting Tests Ressources

3 Introduction

4 JBoss AS / JBoss EAP JBoss AS Application Server
Open source Subscription version JBoss AS Application Server JBoss EAP Enterprise Application Platform Strong security requirment Includes documentation, training, multi year maintenance policies, guaranteed patches, updates, hot fixes, legal assurance, and award-winning support.

5 JBoss AS / JBoss EAP

6 Architecture JBoss Standalone Domain 1 seule JVM
Administré individuellement Domain Multi JVM, multi serveur Notion de « host controller » et « domain controller » Administration centralisée

7 Architecture JBoss : Le mode « domain »
3 types d'acteurs : Des serveurs JBoss sur lesquels sont déployées les applications Un « host controller » par serveur, chacun contrôlant les serveurs JBoss Un « domain controller » permettant de piloter l'ensemble de l'environnement (cycle de vie, configuration, …)

8 Installation Téléchargement de JBoss AS 7 Décompression de l’archive
Déclaration de la variable d’environnement JBOSS_HOME (sera utilisé par Maven) Vérification de votre JAVA_HOME Lancement possible via le fichier « standalone.bat »

9 Installation : JBOSS_HOME, JBOSS_BASE
Dossier d’installation de JBoss Ne doit « jamais » être modifié JBOSS_BASE Correspond au répertoire /jboss de votre projet Contient : La configuration JBoss (standalone.xml, …) Les modules personnalisés (BC, mysql, …) Les « logs » du serveur

10 Structure d’un projet JBOSS_BASE correspond au répertoire « jboss »
. └── project ├── jboss │   ├── modules │   └── standalone │   ├── configuration │   │   ├── logging.properties │   │   └── standalone.xml │   ├── data │   ├── deployments │   └── log ├── pom.xml └── src └── main ├── java └── resources JBOSS_BASE correspond au répertoire « jboss » Attention de ne « commiter » que les fichiers de configuration

11 Déploiement . └── project ├── jboss │ ├── modules │ └── standalone
│   ├── configuration │   │   ├── logging.properties │   │   └── standalone.xml │   ├── data │   ├── deployments │   └── log ├── pom.xml └── src └── main ├── java └── resources cp demo.war $JBOSS_BASE/standalone/deployments 09:37:24, 923 INFO … Deployed « demo.war »

12 Déploiement : Les états
Undeploy currently deployed content : rm $JBOSS_BASE/standalone/deployments/demo.war.deployed

13 Archetype Maven Archetype = Template de projet
Le plugin Maven « jboss-as-maven-plugin » pré-configuré La watchService Un logback pré-configuré La « Kanazination » Modules pré-configurés (configuration, MySQL, BC) Mise en place de la console de management de JBoss Mise en place de la console d’administration de la base de données H2 mvn archetype:generate -DgroupId=votreGroupId -DartifactId=votreArtifactID -Dversion=1.0.0-SNAPSHOT -DarchetypeGroupId=com.worldline.bfi.ita -DarchetypeArtifactId=archetype-war-ita-jboss -DarchetypeVersion=1.0.1 -DinteractiveMode=false

14 Les modules

15 Les modules : Le « classLoader »
Basé sur « Jboss modules » your.app.war Mod-L Mod-A Mod-j Mod-K System CL Server CL Deployment CL Hierarchical CL Modular CL Alexis Hassler, Devoxx 2013 : Le classpath n'est pas mort, mais presque

16 Les modules JDBC (MySQL) Bouncy Castle
Externalisation des fichiers de configuration Apache Lucene / Hibernate Search

17 Les modules : Pourquoi ? Librairies utilisées au démarrage (Divers JDBC) Mutualisation entre plusieurs « webapp » Surcharge d’une implémentation géré par JBoss (non recommandé)

18 Les modules : Création Exemple : Création du module « com.mysql » :
Création de l’arborescence JBOSS_BASE/modules/com/mysql/main Création du fichier module.xml Ajout du jar mysql └── jboss    └── modules      ├── com   └── mysql   └── main    ├── module.xml   └── mysql-connector-java jar

19 Les modules : Création <?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>

20 Les modules : Déclaration explicite
Les dépendances explicites doivent être déclarées dans : jboss-deployment-structure.xml META-INF/MANIFEST.MF <?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="net.atos.configuration"/> </dependencies> </deployment> </jboss-deployment-structure> Dependencies: net.atos.configuration

21 Les modules : Déclaration explicite
<plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-war-plugin</artifactId>    <configuration>       <archive>          <manifestEntries>             <Dependencies>net.atos.configuration</Dependencies>          </manifestEntries>       </archive>    </configuration> </plugin>

22 Les modules : Déclaration implicite
→import javaee.api module <persistence-unit-ref>, <persistence-context-res>, … → import javaee.api module → import org.jboss.as.jpa module → import org.hibernate module → import org.javaassit module

23 Les modules : Déclaration implicite

24 Les modules : Déclaration implicite
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclude-subsystems> <subsystem name="jaxrs"/> </exclude-subsystems> </deployment> </jboss-deployment-structure> Permet de désactiver le module jaxrs (RESTEasy)

25 ClassLoader : Ordre de priorité
System Dependencies : Les modules implicites User Dependencies : Les modules déclarés dans le fichier « jboss-deployment-structure.xml » et/ou dans le fichier « MANIFEST.MF » Local Resource : WEB-INF/classes et/ou WEB-INF/lib 1 2 3

26 Les plugins

27 Les plugins jboss-as-maven-plugin Maven Clean Plugin jboss-mods

28 Les plugins : jboss-as-maven-plugin
Nombreux « goal » à disposition : run, shutdown, deploy, redeploy, undeploy, … Configuration simple mais extrêmement complète Permet de configurer : JBOSS_HOME (variable d’environnement) JBOSS_BASE Les options de la JVM Le répertoire des modules personnalisés Pas de rechargement à chaud

29 Les plugins : jboss-as-maven-plugin
<plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>${version.jboss.maven.plugin}</version> <configuration> <jbossHome>${jboss.home.dir}</jbossHome> <jvmArgs>-Djboss.server.base.dir=${jboss.base.dir}/standalone</jvmArgs> <modules-path> <paths> <path>${jboss.base.dir}/modules</path> <path>${jboss.home.dir}/modules</path> </paths> </modules-path> </configuration> </plugin> <properties> <version.jboss.maven.plugin>7.6.Final</version.jboss.maven.plugin> <jboss.home.dir>${env.JBOSS_HOME}</jboss.home.dir> <jboss.base.dir>${project.basedir}/jboss</jboss.base.dir> </properties>

30 Les plugins : jboss-as-maven-plugin
jboss-as:run -> jboss-as:undeploy -> jboss-as:shutdown jboss-as:run -> jboss-as:redeploy Dans le fichier « standalone.xml » : <deployments> <deployment name="demo.war" runtime-name= "demo.war"> <content sha1="c42ebac74d8a9a39c3fb804bd40f3b902b3340a8"/> </deployment> </deployments>

31 Les plugins : jboss-as-maven-plugin
stopped started deployed shutdown deployed undeploy+shutdown undeploy deploy run(+deploy) undeployed undeployed shutdown

32 Les plugins : Maven Clean Plugin
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.5</version> <configuration> <filesets> <fileset> <directory>jboss/standalone/configuration/standalone_xml_history</directory> </fileset> <fileset> <directory>jboss/standalone/data</directory> </fileset> <fileset> <directory>jboss/standalone/tmp</directory> </fileset> <fileset> <directory>jboss/standalone/log</directory> </fileset> </filesets> </configuration> </plugin>

33 Les plugins : jboss-mods
Problème : Il est déconseillé de « commiter/pusher » des « jar » sur un SCM Solutions : Configurer convenablement les fichiers .svnignore / .hgignore / .gitignore Utiliser le plugin « jboss-mods »

34 Configuration serveur

35 Configuration Centralisée dans le fichier « standalone.xml » (ou « domain.xml ») : DataSource Port Propriétés systeme ...

36 Configuration : Définition d’une datasource
Nom de la jta-data-source (persistence.xml) <subsystem xmlns="urn:jboss:domain:datasources:1.2"> <datasources> <datasource jndi-name="java:jboss/datasources/jbossDS" pool-name= " jbossDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/jboss</connection-url> <driver>mysql</driver> <security> <user-name>root</user-name> <passwprd>root</password> </security> </datasource> <drivers> <driver name="mysql" module="com.mysql"/> </drivers> </datasources> </subsystem> Nom du module à utiliser Configuration via le plugin :

37 Configuration : Configuration des ports
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/> <socket-binding name="ajp" port="8009"/> <socket-binding name="http" port="8081"/> <socket-binding name="https" port="8443"/> … </socket-binding-group> ./standalone.sh -Djboss.socket.binding.port-offset=100

38 Configuration : Administration
API Java (The native management API) CLI (Command Line Interface) Web-based console ( API HTTP/JSON

39 Ecosystème

40 JBOSS_HOME\modules\system\layers\base
JBoss Enterprise Application Platform Component Details

41

42

43 Infinispan « key/value data store and data grid platform »
JSR 107 (JCache) JSR 347 (Data Grids for the Java Platform) Cache local Cache distribué (réplication ou distribution)

44 Infinispan Utilisations : Features :
Comme cache : Hibernate, Lucene, HTTP session, cache applicatif, … Comme data grid Features : Persistence (JDBC, JPA, MongoDB, …) Transaction Query Map/Reduce

45 Infinispan : Cache et CDI
public class Config { @SampleCache @ConfigureCache("sample-cache") @Produces public Configuration greetingCache() { return new ConfigurationBuilder() eviction() strategy(EvictionStrategy.LRU) maxEntries(1000) build(); } } public class Service { private Cache<String, String> cache; }

46 Infinispan : JCache JSR 107 : API Java permettant de gérer le cache de façon standard 4 Annotations à disposition : @CacheResult : Caches the result of a method call @CachePut : Caches a method parameter @CacheRemove : Removes an entry from a cache @CacheRemoveAll : Removes all entries from a cache

47 Infinispan : JCache @CacheResult(cacheName = "sample-cache") public String result(String value) { return value; } @CachePut(cacheName = "sample-cache") public void long String value) { } @CacheRemove(cacheName = "sample-cache") public void long id) { } @CacheRemoveAll(cacheName = "sample-cache") public void removeAll() { }

48 Infinispan : La suite…

49 Troubleshooting + beans.xml + apache-deltaspike.properties + beans.xml
jar jar << Interface >> << Interface >> @Default @Alternative @Alternative @Alternative

50 Tests @RunWith(EJBContainerRunner.class) – openejb-junit Arquillian
@RunWith(CdiTestRunner.class) – DeltaSpike Test-Control Module

51 Ressources https://github.com/jboss-developer/jboss-eap-quickstarts

52 Remarques/Questions


Télécharger ppt "JBoss AS & EAP en développement"

Présentations similaires


Annonces Google