JBoss AS & EAP en développement

Slides:



Advertisements
Présentations similaires
Présentation de frameworks J2EE
Advertisements

Active Directory Windows 2003 Server
Le struts validator – framework de validation
SITools Présentation de l’outil (1/2)
JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
CASTEL Dennis SARZEAUD Floriane TAKAHASHI Atsushi.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
L’intégration continue
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
MySQL I / Présentation. II / Administration et Outils.
Premiers pas avec Apache Ant Par Guillaume BITAUDEAU Le 16/10/2003.
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Projet J2EE Maverick XMLBeans Garcel Jean-Baptiste – Le Loc Martin – Muller Thibaut.
Présentation des frameworks pour Java EE
Projet JEE approfondi Stripes / Toplink
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Installation OpenBravo
Les outils d’intégration continue
Active Directory Windows 2003 Server
Présenté par : Kalleli Dhouha
Architectures Web - N-Tiers
Configuration Android
TomCat M2 – MIAGE/SID
Tapestry - Eclipse Link
JDBC ou comment manipuler une base de données en Java ?
Projet JAVA EE Approfondi
Construire un site avec MapGuide Open Source
Laboratoire d'Informatique de l’Université de Franche-Comté
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Hibernate Search Réunion dunité – 23/10/2008 Erik Kimmel.
Déploiement de systèmes SCA distribués Damien Fournier Projet SCOrWare / Équipe ADAM - INRIA 4 avril 2007.
29/01/09SpringFramework1 SpringFramework Alice GARCIA Fabien FAGOAGA Option Génie Logiciel 3 ème année ENSEIRB.
Autonomic management De Jade à Tune... Daniel Hagimont.
Framework Play 2.0 Démonstration du proof of concept
Création d'un projet Web avec Netbeans
Installation des programmes
EJB & Serveurs d’applications
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SOMMAIRE  Introduction  BCO / Toolbox aujourd’hui  Recommandations pour BCO  CRP aujourd’hui  Recommandations pour CRP  La base de données  Recommandations.
Module I-C3 : Applications Web IUT R&T 2e année
Active Directory Windows 2003 Server
Java Enterprise Edition, anciennement J2EE
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
Guide de paramétrage RRDI pour CLM v3
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Greta des monts du cantal
09/11/2006 CMS Content Management System Système de Gestion de Contenu.
OCSInventory Formation CISCAM 2008.
HIBERNATE Mapping Objet / base de données relationnelle
Page 1Dernière mise à jour: 13 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
Chantier Factory Prototype Bankonet Cellule Architecture – Zoom Chantier Le pictogramme permet de rappeler rapidement la technologie concernée par le Zoom.
Création du projet On commence comme d’habitude :
Quattor : Opérations Courantes - G. Philippon/M. Jouvin4-5/2/2009Quattor : Opérations Courantes - G. Philippon Opérations courantes.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Cours Web Services ISIMA 3F3
Présentation ESTRABOX
Citrix ® Presentation Server 4.0 : Administration Module 9 : Déploiement d'applications.
AXIS Implémentation des echanges type RPC en XML (XML RPC ou JAX-RPC API)‏ Framework à installer au-dessus de Tomcat JDK récent.
ETM IBN ROCHD Présenté par : Mlle KHETTAR Lamia & Mlle AIT SAADA Kahina Novembre 2012.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Transcription de la présentation:

JBoss AS & EAP en développement

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

Introduction

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. http://www.redhat.com/en/technologies/jboss-middleware/community-or-enterprise

JBoss AS / JBoss EAP

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

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, …)

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 »

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 …

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

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 »

Déploiement : Les états Undeploy currently deployed content : rm $JBOSS_BASE/standalone/deployments/demo.war.deployed https://docs.jboss.org/author/display/AS7/Application+deployment

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 http://cookbook-ita.apps.zone52.org/jboss#Archetype_Maven

Les modules

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

Les modules JDBC (MySQL) Bouncy Castle Externalisation des fichiers de configuration Apache Lucene / Hibernate Search … http://cookbook-ita.apps.zone52.org/jboss#Modules

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é)

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-5.1.22.jar

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-5.1.22.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module> http://www.mastertheboss.com/jboss-frameworks/maven-tutorials/jboss-maven/maven-jboss-as-7-plugin-tutorial?showall=&start=1

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

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>

Les modules : Déclaration implicite META/ejb-jar.xml, @Stateless, @Stateful, @MessageDriven, … →import javaee.api module @PersistenceUnit, @PersistenceContext, <persistence-unit-ref>, <persistence-context-res>, … → import javaee.api module → import org.jboss.as.jpa module → import org.hibernate module → import org.javaassit module https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments

Les modules : Déclaration implicite

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)

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

Les plugins

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

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 https://docs.jboss.org/jbossas/7/plugins/maven/latest/

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> https://docs.jboss.org/jbossas/7/plugins/maven/latest/

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>

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

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> http://maven.apache.org/plugins/maven-clean-plugin/

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 » https://kazan.priv.atos.fr/xwiki/wiki/jbossmodsxwiki1

Configuration serveur

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

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 : https://docs.jboss.org/jbossas/7/plugins/maven/latest/examples/complex-example.html

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

Configuration : Administration API Java (The native management API) CLI (Command Line Interface) Web-based console (http://<host>:9990/console) API HTTP/JSON

Ecosystème

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

http://www.jboss.org/projects/

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)

Infinispan Utilisations : Features : Comme cache : Hibernate, Lucene, HTTP session, cache applicatif, … Comme data grid Features : Persistence (JDBC, JPA, MongoDB, …) Transaction Query Map/Reduce http://cookbook-ita.apps.zone52.org/using-infinispan-as-hibernate-second-level-cache-provider

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 { @Inject @SampleCache private Cache<String, String> cache; … } http://infinispan.org/docs/5.3.x/user_guide/user_guide.html#_cdi_support

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 http://infinispan.org/docs/5.3.x/user_guide/user_guide.html#_use_jcache_caching_annotations

Infinispan : JCache @CacheResult(cacheName = "sample-cache") public String result(String value) { return value; } @CachePut(cacheName = "sample-cache") public void put(@CacheKey long id, @CacheValue String value) { } @CacheRemove(cacheName = "sample-cache") public void remove(@CacheKey long id) { } @CacheRemoveAll(cacheName = "sample-cache") public void removeAll() { } https://kazan.priv.atos.fr/share/data/technical-user-paylib/cookbook-sample/jboss-cache/index.html

Infinispan : La suite…

Troubleshooting + beans.xml + apache-deltaspike.properties + beans.xml jar jar << Interface >> << Interface >> @Default @Alternative @Alternative @Alternative http://deltaspike.apache.org/documentation/spi.html#_global_alternative

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

Ressources https://github.com/jboss-developer/jboss-eap-quickstarts https://wiki.priv.atos.fr/wiki/index.php/JBoss_Application_Server http://cookbook-ita.apps.zone52.org/?s=jboss https://docs.jboss.org/author/display/AS7/Documentation http://www.mastertheboss.com

Remarques/Questions