Télécharger 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
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.