JBoss AS 7 : Déployer sur terre et dans les nuages

Preview:

DESCRIPTION

Présentation au LavaJUG (Clermont-Ferrand), le 13 septembre 2012

Citation preview

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

?

Recommended