jboss as 7 : déployer sur terre et dans les nuages
DESCRIPTION
Présentation au LavaJUG (Clermont-Ferrand), le 13 septembre 2012TRANSCRIPT
Déployersur terre et dans les nuages
Alexis Hasslerseptembre 2012
@AlexisHassler
Développeur, formateur Java
Indépendant
Co-leader du
AlexisHassler
Historique
1999
2001
2000
2002
2003
2005
2004
2006
2007
2009
2008
2010
20112012
JBoss Group LLC
JBoss Inc
RedHat
2.22.0
3.03.24.0
4.25.05.16.07.0, 6.17.1
Startup
0 s
5 s
10 s
15 s
20 s
25 s
30 s
35 s
40 s
45 s
50 s
AS 4.0 AS 4.2
AS 5.1
AS 6.0
Startup
0 s
10 s
20 s
30 s
40 s
50 s
60 s
70 s
80 s
90 s
Geronimo 2
GlassFish 2
GlassFish 3
JBoss 5
JBoss 6
Weblogic 10
Websphere 7
http://tiny.cc/agoncal-as-startup (12/2009)
Startup
0 s
5 s
10 s
15 s
20 s
25 s
30 s
35 s
40 s
45 s
50 s
AS 4.0 AS 4.2
AS 5.1
AS 6.0
AS 7.0AS 7.1(full)
Startup
http://community.jboss.org/wiki/AS7StartupTimeShowdown
Lightweight
0 Mo
20 Mo
40 Mo
60 Mo
80 Mo
100 Mo
120 Mo
140 Mo
160 Mo
180 Mo
AS 4.0 AS 4.2
AS 5.1
AS 6.0
AS 7.0
AS 7.1(full)
Heap used
Configuration
find <profile_dir> -name *.xml | wc -l
0
20
40
60
80
100
120
140
160
AS 4.0 AS 4.2
AS 5.1
AS 6.0
AS 7.1
bin
bundles
modules
standalone
domain
welcome-content
configuration
data
deployments
lib/ext
docs
bin
client
lib
server
common
docs
deploylib
default
standardalljbossweb-standaloneminimal
confdatadeploy
libdeployers
Configuration
Configuration
standalone/configuration/standalone.xml
Configuration
server/default/deploy/hdscanner-jboss-beans.xml
server/default/conf/bootstrap/profile.xml
Configuration
standalone.xml
domain.xml / host.xml
*-jms.xml
Queues & Topics
*-ds.xml
Datasource
Composants AS7
Core Infrastructure
SubsystemsD
atas
ourc
e
Java
EE
EJB
CDI -
Wel
d
JPA
- H
iber
nate
Nam
ing
Cach
e -
Infi
nisp
an
JMS
- H
orne
tQ
JGro
ups
JAX
-RS
- RE
STea
sy
JCA
- Ir
onJa
cam
ar
JBos
s Tr
ansa
ctio
n
JBos
s Lo
ggin
g
JSF
- M
ojar
ra
JAX
-WS
- CX
F
...
Composants AS6
Micro container
ServicesD
atas
ourc
e
Java
EE
EJB
CDI -
Wel
d
JPA
- H
iber
nate
Nam
ing
Cach
e -
Infi
nisp
an
JMS
- H
orne
tQ
JGro
ups
JAX
-RS
- RE
STea
sy
JCA
JBos
s Tr
ansa
ctio
n
JBos
s Lo
ggin
g
JSF
- M
ojar
ra
JAX
-WS
- CX
F
...
Architecture AS7
Core Infrastructure
Subsystems
Deployers VFS Jandex Reflect Cache Repository
Server Controller Service
MSCJBoss
ModulesDMR Controller Threads
Déploiement
bin
bundles
modules
standalone
configuration
data
deployments
lib/ext
Automatique
– idem AS <7 pour les archives
– désactivé en mode explosé
cp demo.war $JBOSS_HOME/standalone/deployments/
17:12:24,923 INFO ... Deployed "demo.war"
Déploiement
Manuel
– auto-deploy-zipped="false"
cp demo.war $JBOSS_HOME/standalone/deployments/
17:12:24,923 INFO ... Found demo.war ...
touch $JBOSS_HOME/standalone/deployments/demo.war.dodeploy
17:12:24,923 INFO ... Found demo.war ...
Administration
Console CLI
HTTP / JSON Java API
http://<host>:9990/console
jboss-admin.sh
Naviguer
– cd, ls, pwd
Lire la configuration
– :read-resource, :read-attribute,...
Modifier la configuration
– :add-namespace, :write-attribute,...
jboss-admin.sh
Datasource
Déploiement
upload + deploy
undeploy
Modules
"Classpath is dead!"
Mark Reinhold, JavaOne 2009
http://java.sun.com/javaone/2009/general_sessions.jsp
Modules
Java Module
– Projet Jigsaw
– Java SE 8
OSGi
JBoss Module
Modules
Hiérarchie Modularité
System Classloader
JBossClassloaders
DeploymentClassloader
DeploymentClassloader
Sub-deploymentClassloader
UCR
deployment.my.war
org.hibernate.core
org.slf4j
org.jboss.weld
org.javassist
Modules
Modules système
– Java EE
Modules user
Local Resource
Inter deployment dependencies
Déploiement
Séparation module / application
1 war => 1 module
– deployment.demo.war
Déploiement
1 ear => n modules
– ear/lib
– war
– ear
<!-- config globale --><subsystem xmlns="urn:jboss:domain:ee:1.0" > <ear-subdeployments-isolated> false </ear-subdeployments-isolated></subsystem>
<!-- jboss-deployment-structure.xml--><jboss-deployment-structure> <ear-subdeployments-isolated> true </ear-subdeployments-isolated></jboss-deployment-structure>
Module global
standalone.xml ou domain.xml
– Slot = version
<subsystem xmlns="urn:jboss:domain:ee:1.0" > <global-modules> <module name="org.javassist" slot="main" /> </global-modules></subsystem>
Domain
Host 1
HostController
Server
Server
Host 2
HostController
Server
Host 3
HostController
Server
Host 0
DomainController
Domain
Host 1
HostController
Server
Server
Host 2
HostController
Server
Host 3
HostController
Server
Host 0
DomainController
Server Group 1
Server Group 2
RHQ
Host 1
RHQAgent
JBoss AS
Httpd
Host 2
RHQAgent
...Host 0
RHQServer
MySQLOSMem, CPU, FS
...
...
...
IDE
Eclipse 3.7+ avec JBoss Tools
IntelliJ IDEA 11
Netbeans 7.2
Cloud
IaaSInfrastructure as a Service
PaaSPlatform as a Service
SaaSSoftware as a Service
Hardware+
OS
Runtime/
Middleware
Software
PaaS by redhat
Java, Perl, PHP, Python, Ruby
OpenShift
– Git
– < Web profile
– EAP 6
OpenShift Origin
EAP 6
Cloudbees
Java EE 6 – Web Profile
Uniquement war
Déploiement par l'API Cloudbees
DD spécifiques Cloudbees
?
Versions intermédiaires
JBoss AS 7.0 CR1
JBoss AS 7.0.0.Final
…
JBoss AS 7.1.1.Final
Migration
JBoss AS 6 => JBoss AS 7
cf. E. Hugonnet (@ehsavoie)
Migration de Silverpeas
Modules
Log4J
Corrigé en 7.1.2
deployment.my.war
org.apache.log4j
war
modules
org.apache.log4j:main
AS / EAP
JBoss AS 7.1.2
Base pour JBoss EAP 6
Pas de release officielle !
git clone git://github.com/jbossas/jboss-as.gitcd jboss-asgit checkout 7.1.2.Final./build.sh -DskipTests
cp -R build/target/jboss-as-7.1.2.Final /opt/java/
Messages d'erreur
{"JBAS014653: Opération composite échouée et annulée. Étapes déficientes :" => {"Opération step-2" => {"JBAS014771: Services avec des dépendances manquantes/non disponibles" => ["jboss.deployment.unit.\"swmsg-web.war\".jboss.security.jacc Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"org.apache.catalina.servlets.DefaultServlet\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.naming.context.java.module.swmsg-web.swmsg-web.env.ejb.MessageSecured Missing[jboss.naming.context.java.app.swmsg-web.swmsg-ejb3.\"MessageSecuredBean!fr.sewatech.formation.appserv.ejb3.MessageServiceLocal\"]","jboss.deployment.unit.\"swmsg-web.war\".component.\"javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.naming.context.java.module.swmsg-web.swmsg-web.env.ejb.MessageService Missing[jboss.naming.context.java.app.swmsg-web.swmsg-ejb3.\"MessageServiceBean!fr.sewatech.formation.appserv.ejb3.MessageServiceLocal\"]","jboss.naming.context.java.module.swmsg-web.swmsg-web.env.jdbc.sewa-ds Missing[jboss.naming.context.java.SewaDS]","jboss.deployment.unit.\"swmsg-web.war\".jndiDependencyService Missing[JBAS014861: <one or more transitive dependencies>]","jboss.naming.context.java.module.swmsg-web.swmsg-web.env.jms.SWq Missing[jboss.naming.context.java.queue.SWq]","jboss.deployment.unit.\"swmsg-web.war\".component.\"com.sun.faces.config.ConfigureListener\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"javax.faces.webapp.FacetTag\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"javax.servlet.jsp.jstl.tlv.ScriptFreeTLV\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"org.apache.jasper.servlet.JspServlet\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"fr.sewatech.formation.appserv.web.PageFilter\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.deployment.unit.\"swmsg-web.war\".component.\"fr.sewatech.formation.appserv.web.MessageServlet\".START Missing[JBAS014861: <one or more transitive dependencies>]","jboss.web.deployment.default-host./swmsg-web Missing[JBAS014861: <one or more transitive dependencies>]"]}}}
JBoss Logging
standalone.xml<subsystem xmlns="urn:jboss:domain:logging:1.1"> <periodic-rotating-file-handler name="FILE"> <formatter> <pattern-formatter pattern="%d %-5p [%c] (%t) %s%E%n"/> </formatter> <file relative-to="jboss.server.log.dir" path="server.log"/> <suffix value=".yyyy-MM-dd"/> <append value="true"/> </periodic-rotating-file-handler> <root-logger> <level name="INFO"/> <handlers> <handler name="FILE"/> </handlers> </root-logger></subsystem>
Conclusion
Glassfish 3
Glassfish 2
1999
2001
2000
2002
2003
2005
2004
2006
2007
2009
2008
2010
20112012
2.22.0
3.03.24.0
4.25.05.16.07.0, 6.17.1
http://www.jboss.org/as7.html
http://www.jboss.org/openshift/
Auto-promotion
http://www.sewatech.fr/formation-jboss-7.html
16 au 18 octobre 2012 à Lyon
?