Apresento alguns conceitos sobre a arquitetura do JBoss Fuse. Nesta apresentação criamos um simples serviço CXF e mostramos diferentes formas de implantar e gerenciar o serviço no JBoss Fuse 6.1
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
1. Red Hat JBoss Fuse:
conceitos básicos para
desenvolvedores
Rafael T. C. Soares
Arquiteto de Soluções, Red Hat
<rsoares@redhat.com>
Janeiro, 2015
2. 6 ADD NAME (View > Master > Slide master)
Já uso Apache Camel em minha aplicação!
● Camel é um Framework de Integração, não um ESB.
● Implementa os principais EIPs
● Oferece mecanismos para:
● Validação
● Enriquecimento (tratamento)
● Transformação
● Rotamento
de mensagens
3. 7 ADD NAME (View > Master > Slide master)
Por que JBoss Fuse?
● Quando seu projeto de integração se torna complexo...
● Onde implantar minhas integrações?
● Como escalar e garantir alta disponibilidade?
● Como versionar e atualizar minha aplicação?
4. 8 ADD NAME (View > Master > Slide master)
Por que JBoss Fuse
● Quando seu projeto de integração se torna complexo...
● Preciso de um meio para realizar debug e o trace de
mensagens em minhas integrações...
● Preciso implementar comunicação assíncrona por meio
de mensageria...
● etc
5. 9 ADD NAME (View > Master > Slide master)
Por que JBoss Fuse
● Quando seu projeto de integração se torna complexo...
● Preciso de suporte para implantação em larga escala...
● Como atualizar a aplicação sem afetar o ambiente
inteiro?
● Quero implantar minha integração em um container
leve e flexivel!
7. 11
Red Hat JBoss Fuse
JBoss Fuse – The Big Picture
● Tooling
● Frameworks
● Containers
● Message Broker
● Service Bus
● Monitoring/Operation
8. 12
Red Hat JBoss Fuse
JBoss Fuse – The Big Picture
● Solução composta por vários Projetos Open Source
JBoss Fuse
Apache CXF
Fuse Fabric
Apache Camel
Apache ServiceMix
Apache ActiveMQ
Apache Karaf
9. 13
Red Hat JBoss Fuse
JBoss Fuse Container
● Suporta vários tipos de deployment
11. 15 ADD NAME (View > Master > Slide master)
Modelo de Desenvolvimento
● Linguagem de programação
● JavaSE 1.6
● Várias linguages dinâmicas como DSL
● Scala
● JS
● Groovy
● Injeção de Dependência – DI
● Spring
● Blueprint (OSGI)
● Construção e gestão de dependências
● Apache Maven
12. 16 ADD NAME (View > Master > Slide master)
Ambiente
● JavaSE 1.6 ou >
● Apache Maven 3
● Red Hat JBoss Fuse IDE
● ECLIPSE plugin
● JBoss Developer Studio (JBDS)
13. 17 ADD NAME (View > Master > Slide master)
Modelo de Desenvolvimento
● JBoss Fuse Project
● Metadados
● OSGI Bundle
● METAINF/MANIFEST.MF
● Fuse Application Bundle (FAB)
● METAINF/maven/groupId/artifactId/pom.xml
● Web ARchive
● WEBINF/web.xml
14. 18 ADD NAME (View > Master > Slide master)
Maven: conceitos
● Ciclo de vida
● mvn <compile, test, package, install ...>
● Estrutura do projeto
●
15. 19 ADD NAME (View > Master > Slide master)
Maven: conceitos
● Resources/Descriptors
● Spring
● ProjectDir/src/main/resources/METAINF/spring/
● Blueprint XML
● ProjectDir/src/main/resources/OSGI
INF/blueprint/
● Packaging
● Fuse Application Bundle (Fuse JAR)
● Bundle (OSGI JAR)
● WAR (Web Archive)
16. 20 ADD NAME (View > Master > Slide master)
Maven: conceitos
● Maven Coordinates
● groupdId : arctifactId : version
● Dentro do JBoss Fuse container
● mvn:groupid/artifactid/version
● Dependências
● Escopo
● build, test e run time
● OSGI Bundle
● provided – não tem efeito
● Fuse Application Bundle
● provided – implantada separadamente (shared library)
17. 21 ADD NAME (View > Master > Slide master)
Maven: conceitos
● Repositórios
● Local Repository
● /home/<user>/.m2/repository
● Remote Repository
● Online
● Maven Central
● Fuse Source Maven Repo
● JBoss Maven Central
● etc
● System Repository (acessado apenas pelo Fuse em runtime)
● $FUSE_HOME/system
18. 22 ADD NAME (View > Master > Slide master)
Maven: conceitos
● Repositórios Remotos
● Build Time
● /home/<user>/.m2/settings.xml
● Run Time
● $FUSE_HOME/etc/org.ops4j.pax.url.mvn.cfg
org.ops4j.pax.url.mvn.repositories=
http://my.corporate.nexus.com/nexus/content/groups/public@snapshots
http://repo1.maven.org/maven2@id=maven.central.repo,
https://repo.fusesource.com/nexus/content/repositories/releases@id=fusesource.release.repo,
https://repo.fusesource.com/nexus/content/groups/ea@id=fusesource.ea.repo,
http://svn.apache.org/repos/asf/servicemix/m2repo@id=servicemix.repo,
http://repository.springsource.com/maven/bundles/release@id=springsource.release.repo,
http://repository.springsource.com/maven/bundles/external@id=springsource.external.repo,
https://oss.sonatype.org/content/groups/scalatools@id=scala.repo
19. 23 ADD NAME (View > Master > Slide master)
Injeção de Dependência
● Frameworks Suportados
● Spring XML
● Blueprint XML
● OSGI Spec (osgi.org)
● Similiar ao Spring.
● Antigo Spring DM (implementação da spec OSGI).
● Mais leve
● Resolve dependências automaticamente em runtime
20. 24 ADD NAME (View > Master > Slide master)
Injeção de Dependência
● Spring XML
● Injeção de dependência
● POJO Beans
● Configuração
● Camel
● CXF
● ActiveMQ
● OSGI toolkit
● OSGI Services (OSGI Compendium)
● Containers Services
● Persistence
● Security
● Transactions
21. 25 ADD NAME (View > Master > Slide master)
Injeção de Dependência
● Spring XML
● Descritor
● <ProjectDir>/src/main/resources/META-INF/spring/*.xml
●
22. 26 ADD NAME (View > Master > Slide master)
Injeção de Dependência
● Blueprint XML
● Injeção de dependência
● Mais leve
● Específico para containers OSGI
● Configuração
● Camel
● CXF
● ActiveMQ
● OSGI toolkit
● OSGI Services (OSGI Compendium)
● Containers Services
● Persistence
● Security
● Transactions
23. 27 ADD NAME (View > Master > Slide master)
Injeção de Dependência
● Blueprint XML
● Descritor
● <ProjectDir>/src/main/resources/OSGI-INF/blueprint/*.xml
●
24. 28
Red Hat JBoss Fuse
Apache CXF Web Service
Demo: WS Code First Approach
29. 33
Red Hat JBoss Fuse
JBoss Fuse: instalação express
● unzip jbossfusefull6.1.0.redhat379.zip
● cd jbossfuse6.1.0.redhat379/
● vim etc/users.properties
● cd bin/
● ./fuse
● * Inicia o Fuse no modo standalone
#All users specified in this file, will be uploaded to the fabric registry and will
#be available to all containers that join the fabric.
#The password of the first user in the file will also be used as a registry (zookeeper) password
#unless a password is explicitly specified.
admin=admin,admin
31. 35
Red Hat JBoss Fuse
Deploy do WS
JBossFuse:karaf@root> install
mvn:org.fusesource.example/cxfbasic/1.0SNAPSHOT
Bundle ID: 251
JBossFuse:karaf@root> start 251
JBossFuse:karaf@root> list
[ 251] [Active ] [ ] [Started] [ 60] Apache ServiceMix :: CXF
Code First OSGi Bundle (1.0.0.SNAPSHOT)
● obs: por padrão o Fuse acessa o repositório local do Maven
(~/.m2/repository) para baixar um artefato. Caso necessário é possível
configurar um repositório remoto no arquivo de configuração:
$FUSE_HOME/etc/org.ops4j.pax.url.mvn.cfg através da
propriedade org.ops4j.pax.url.mvn.repositories
33. 37
Red Hat JBoss Fuse
Testando o Serviço
● WS Endpoint
● http://localhost:8181/cxf/PersonServiceCF
● WS Client
● cd cxfbasic
● mvn Pclient
INFO: Creating Service
{http://example.fusesource.org/}PersonService from class org.fusesource.example.Person
Invoking getPerson...
getPerson._getPerson_personId=Guillaume
getPerson._getPerson_ssn=0000000000
getPerson._getPerson_name=Guillaume
37. 41
Red Hat JBoss Fuse
Build
● Desabilitar Teste unitário (gerado pelo archetype)
#comentar @Test da classe
vim src/test/java/org/fusesource/example/RouteTest.java
● Adicionar dependencia do componente cameljetty
vim pom.xml
● Build
● cd camelbasic
● mvn install
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>cameljetty</artifactId>
<version>2.10.0.redhat60024</version>
</dependency>
38. 42
Red Hat JBoss Fuse
Deploy do WS
JBossFuse:karaf@root> install
mvn:org.fusesource.example/camelbasic/1.0SNAPSHOT
Bundle ID: 252
JBossFuse:karaf@root> start 252
JBossFuse:karaf@root> list
[ 252] [Active ] [ ] [Started] [ 60] A Camel Blueprint Route
(1.0.0.SNAPSHOT) (1.0.0.SNAPSHOT)
39. 43
Red Hat JBoss Fuse
Testando o Serviço
● WS Client
● cd ../cxfbasic
● mvn Pclient
Dexec.args="http://localhost:8282/cxf/PersonServiceCF"
INFO: Creating Service {http://example.fusesource.org/}PersonService from
class org.fusesource.example.Person
Invoking getPerson...
Após 5 seg...
getPerson._getPerson_personId=Guillaume
getPerson._getPerson_ssn=0000000000
getPerson._getPerson_name=Guillaume
41. 45
Red Hat JBoss Fuse
Agregação de projetos no Maven
● Maven Aggregate POM
● cd getstarted/
● vim pom.xml
<?xml version="1.0" encoding="UTF8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv4_0_0.xsd">
<groupId>org.fusesource.example</groupId>
<artifactId>getstarted</artifactId>
<version>1.0SNAPSHOT</version>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<name>Getting Started :: Aggregate POM</name>
<description>Getting Started example</description>
<modules>
<module>cxfbasic</module>
<module>camelbasic</module>
</modules>
</project>
● Build
● mvn install
42. 46
Red Hat JBoss Fuse
Definindo uma Feature para a
Aplicação: Apache Karaf Feature
43. 47
Red Hat JBoss Fuse
OSGI Bundles vs. Application Feature
● Bundle = unidade de deployment isolada
● Application Feature = conjunto de bundles que
formam o núcleo da aplicaçao
● Mecanismo mais inteligente e conveniente de
implantação de aplicações dentro do JBoss Fuse
● Ex: get-started project feature xml descriptor
44. 48
Red Hat JBoss Fuse
OSGI Bundles vs. Application Feature
● Como compor uma Feature?
● Depende das dependências de sua aplicação
● Depende dos bundles e features disponíveis (pré-
implantadas) no container
JBossFuse:karaf@root> features:list
...
[installed ] [2.12.0.redhat610379 ] camel
[installed ] [2.12.0.redhat610379 ] camelcore
[installed ] [2.12.0.redhat610379 ] camelspring
[installed ] [2.12.0.redhat610379 ] camelblueprint
45. 49
Red Hat JBoss Fuse
Fuse Application Bundles
● mecanismo de packaging utilizado para definição de
Features
● Capaz de resolver dependências automaticamente em
runtime
● Modos de deployments suportados
● Hot Deploy
● $FUSE_HOME/deploy
● Feature URL
● Fuse Fabric Profile
46. 50
Red Hat JBoss Fuse
Criando um repositório de
Features customizado
47. 51
Red Hat JBoss Fuse
Feature XML descriptor
● Definindo a Feature
● Na raiz do projeto Maven getstarted
mkdir p features/src/main/resources/
vim features/src/main/resources/getstarted
feature.xml
48. 52
Red Hat JBoss Fuse
Empacotando a Feature
● Feature Packaging
● Na raiz do projeto Maven getstarted
● vim features/pom.xml
50. 54
Red Hat JBoss Fuse
Build da Feature
● Feature Packaging
● Na raiz do projeto Maven getstarted
● cd features/pom.xml
● mvn install
● Observe que o JAR gerado contém o XML Descriptor da Feature
criada
$ jar tvf target/getstarted1.0SNAPSHOT.jar
0 Tue Jan 13 00:15:08 BRT 2015 METAINF/
132 Tue Jan 13 00:15:06 BRT 2015 METAINF/MANIFEST.MF
394 Tue Jan 13 00:12:26 BRT 2015 getstartedfeature.xml
0 Tue Jan 13 00:15:08 BRT 2015 METAINF/maven/
0 Tue Jan 13 00:15:08 BRT 2015 METAINF/maven/org.fusesource.example/
0 Tue Jan 13 00:15:08 BRT 2015 METAINF/maven/org.fusesource.example/getstarted/
1487 Tue Jan 13 00:14:52 BRT 2015 METAINF/maven/org.fusesource.example/getstarted/pom.xml
125 Tue Jan 13 00:12:26 BRT 2015 METAINF/maven/org.fusesource.example/getstarted/pom.properties
51. 55
Red Hat JBoss Fuse
Deploy da Feature
● Feature Deployment
● No Fuse Shell
● Remova os OSGI Bundles: camelcxf e camelbasic
● JBossFuse:karaf@root> list
● JBossFuse:karaf@root> uninstall 251
● JBossFuse:karaf@root> uninstall 252
● Informe ao Container onde localizar as features instaladas
● JBossFuse:karaf@root> features:addurl
mvn:org.fusesource.example/getstarted/1.0
SNAPSHOT/xml/features
52. 56
Red Hat JBoss Fuse
Deploy da Feature
● No Fuse Shell
● Confira se a Feature getstartedbasic foi carregada no Container
JBossFuse:karaf@root> features:list | grep getstarted
[uninstalled] [0.0.0] getstartedbasic getstarted
● Instale a Feature
JBossFuse:karaf@root> features:install getstartedbasic
JBossFuse:karaf@root> features:list | grep getstarted
[installed] [0.0.0] getstartedbasic getstarted
53. 57
Red Hat JBoss Fuse
OSGI Config Service: configurando a
aplicação em runtime
54. 58
Red Hat JBoss Fuse
Mecanismo de configuração de aplicações
Permite alterar propriedades e/ou configurações de suas aplicações em
tempo de implantação e execução
● Conceitos
● Persistent ID (PID)
● Conjunto de propriedades
● Nome segue o padrão Java Package
● Ex: org.ops4j.pax.web (configura o conatiner web do
Jboss Fuse – Jetty WebServer)
● Properties
● Propriedade (nome=valor) pertencente à um PID
55. 59
Red Hat JBoss Fuse
Mecanismo de configuração de aplicações
● Definição de PIDs dentro do Fuse
● Arquivo texto (estilo properties file)
● $JBOSS_FUSE_HOME/etc
● <pid name>.cfg
● Ex: org.ops4j.pax.web.cfg
● Fuse Profiles
● Utilizando a console de gerência HawtIO
● Utilizando o Shell através do comando fabric:profileedit
56. 60
Red Hat JBoss Fuse
Mecanismo de configuração de aplicações
● Substituição de propriedades (property placehoders)
● Altere o projeto cxfbasic
● Remova o descritor (Spring XML)
● cxfbasic/src/main/resources/METAINF/spring/beans.xml
● Crie um novo descritor (Blueprint XML)
● cxfbasic/src/main/resources/OSGIINF/blueprint/blueprint.xml
● Dessa forma podemos utilizar o mecanismo OSGI Config Admin service
<?xml version="1.0" encoding="UTF8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"
xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprintcm/v1.1.0">
<! osgi blueprint property placeholder >
<cm:propertyplaceholder id="placeholder"
persistentid="org.fusesource.example.get.started">
<cm:defaultproperties>
<cm:property name="portNumber" value="8181"/>
</cm:defaultproperties>
</cm:propertyplaceholder>
<jaxws:endpoint id="HTTPEndpoint"
implementor="org.fusesource.example.PersonImpl"
address="http://0.0.0.0:${portNumber}/PersonServiceCF"/>
</blueprint>
PID name
Default value
Property name
Placehoder
57. 61
Red Hat JBoss Fuse
Mecanismo de configuração de aplicações
● Faça o build do projeto cxf-basic instale a feature get-started-cxf
● cd cxfbasic/
● mvn clean install
● Instale a feature get-started-cxf
● JBossFuse:karaf@root> features:uninstall getstartedbasic
● JBossFuse:karaf@root> features:install getstartedcxf
● Teste o Web Service utilizando a porta configurada no PID:
$JBOSS_FUSE_HOME/etc/org.fusesource.example.get.started.cfg
● mvn Pclient Dexec.args="http://localhost:8182/PersonServiceCF"
Invoking getPerson...
getPerson._getPerson_personId=Guillaume
getPerson._getPerson_ssn=0000000000
getPerson._getPerson_name=Guillaume
59. 63
Red Hat JBoss Fuse
Fabric
● Gestão e Provisionamento de:
● Containers
● Configurações
● Artefatos
em múltiplos Hosts
● Garante
● Alta disponibilidade
● Escalabilidade
60. 64
Red Hat JBoss Fuse
Fabric: composição
● Fabric Registry Service
● “Banco de Dados compartilhado”
● mantém informações sobre o estado do Fabric
● Info sobre provisionamento e gestão da topologia de
containers
● Fabric
● Conjunto de containers que compartilham um registro comum
● Fabric Ensemble
● Grupo de Fabric Servers:
● Para manter a alta disponibilidade, utiliza sempre um número
impar (1, 3, 5, etc) de Servers
61. 65
Red Hat JBoss Fuse
Fabric: composição
● Fabric Server
● Mantém o Registry Service
● Fabric Container (Fuse Instance)
● Runtime da aplicação
● Tipos
● Root container
● Child container
● Profile
● Unidade de implantação
● Composto por: features, bundles e configurações (properties)
63. 67
Red Hat JBoss Fuse
Meu primeiro Fabric: server registry
JBossFuse:karaf@root> fabric:create newuser AdminUser new
userpassword AdminPass zookeeperpassword ZooPass wait
forprovisioning resolver manualip manualip 127.0.0.1
Use um IP Fixo para evitar
problemas com trocas de enderećo IP
64. 68
Red Hat JBoss Fuse
Meu primeiro Fabric: containers
JBossFuse:karaf@root> fabric:containercreatechild root child 2
The following containers have been created successfully:
Container: child1.
Container: child2.
JBossFuse:karaf@root> fabric:containerlist
[id] [version] [connected] [profiles] [provision status]
Root* 1.0 true fabric, fabricensemble00001, jbossfusefull success
child1 1.0 true default success
child2 1.0 true default success
65. 69
Red Hat JBoss Fuse
Meu primeiro Fabric: feature deploy
● Profile Base
● JBossFuse:karaf@root> fabric:profilecreate parents featurecxf gscxfbase
● Adicionando o repositório de features
JBossFuse:karaf@root> profileedit r mvn:org.fusesource.example/get
started/1.0SNAPSHOT/xml/features gscxfbase
Adding feature repository:mvn:org.fusesource.example/getstarted/1.0
SNAPSHOT/xml/features to profile:gscxfbase version:1.0
● Deploy da feature getstartedcxf
JBossFuse:karaf@root> profileedit features getstartedcxf gscxfbase
Adding feature:getstartedcxf to profile:gscxfbase version:1.0
NOTA: caso seja necessário configurar um repositório maven corporativo remoto (ex. Nexus, Archiva, etc),
consulte as intruções descritas em:
https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.1/html/Configuring_and_Running_Red_Ha
66. 70
Red Hat JBoss Fuse
Meu primeiro Fabric: criando o profile
● Herança de profiles: criando dois profiles devirados do profile Base (gs
cxfbase)
● JBossFuse:karaf@root> profilecreate parents gscxfbase gscxf01
● JBossFuse:karaf@root> profilecreate parents gscxfbase gscxf02
67. 71
Red Hat JBoss Fuse
Meu primeiro Fabric: profile property placeholder
● Alterando a propriedade portNumber em cada profile
● gs-cxf-01
● JBossFuse:karaf@root> profileedit p
org.fusesource.example.get.started/portNumber=8185 gscxf01
Setting value:8185 key:portNumber on pid:org.fusesource.example.get.started and
profile:gscxf01 version:1.0
● gs-cxf-02
● JBossFuse:karaf@root> profileedit p
org.fusesource.example.get.started/portNumber=8186 gscxf02
Setting value:8186 key:portNumber on pid:org.fusesource.example.get.started and
profile:gscxf02 version:1.0
68. 72
Red Hat JBoss Fuse
Meu primeiro Fabric: deploy
JBossFuse:karaf@root> fabric:containerchangeprofile
child1 gscxf01
JBossFuse:karaf@root> fabric:containerchangeprofile
child2 gscxf02
69. 73
Red Hat JBoss Fuse
Meu primeiro Fabric: testando os endpoints
cd getstarted/cxfbasic
● mvn Pclient
Dexec.args="http://localhost:8185/PersonServiceCF"
● mvn Pclient
Dexec.args="http://localhost:8186/PersonServiceCF"
Invoking getPerson...
getPerson._getPerson_personId=Guillaume
getPerson._getPerson_ssn=0000000000
getPerson._getPerson_name=Guillaume
This is the official brand platform statement.
Our vision and our business model match up well with what companies want and need now. They want vision, flexibility, and better, faster solutions.
This is something Red Hat is uniquely qualified to do, and to help customers do. Our open source model takes advantage of this idea--that’s what open source is about.
This platform doesn’t scream open source—but open source is the foundation. This platform explains why open innovation is important and why it helps our customers with that long-term, future-looking vision they want so badly.
STOP HERE AND SHOW THE VIDEO
This is the official brand platform statement.
Our vision and our business model match up well with what companies want and need now. They want vision, flexibility, and better, faster solutions.
This is something Red Hat is uniquely qualified to do, and to help customers do. Our open source model takes advantage of this idea--that’s what open source is about.
This platform doesn’t scream open source—but open source is the foundation. This platform explains why open innovation is important and why it helps our customers with that long-term, future-looking vision they want so badly.
STOP HERE AND SHOW THE VIDEO
The insight we gained from our research tells us that the world is changing. Networking. Connecting. Not just socially, and not just locally. Globally. For professional reasons and personal ones. Buying a car. Seeking a job.
This is also happening in business. Companies that figure out how to tap into their own networks will be more successful, because they will have access to innovation—to ideas, to improvements. They’ll get to market faster, solve problems faster.
They want to look ahead better. Forecast and plan more accurately, and create infrastructures that are more flexible in order to address and triumph over change.
OSGI Bundle não é o tipo de implantação mais conveniente para o JBoss Fuse Container
Uma aplicação pode consistir em vários Bundles OSGI
Agrega múltiplos OSGI Bundles formando uma unidadede implantação
OSGI Bundle não é o tipo de implantação mais conveniente para o JBoss Fuse Container
Uma aplicação pode consistir em vários Bundles OSGI
Agrega múltiplos OSGI Bundles formando uma unidadede implantação
OSGI Bundle não é o tipo de implantação mais conveniente para o JBoss Fuse Container
Uma aplicação pode consistir em vários Bundles OSGI
Agrega múltiplos OSGI Bundles formando uma unidadede implantação
These words probably look familiar to you, if you’ve done work with the Red Hat brand before.
This is the tone and personality that works with our core culture, and our customers really love this about Red Hat.
It sets us apart from many other technology companies.
It remains part of our culture and part of our brand platform.
É uma camada tecnologica que permite que um grupo de conatiners formem um cluster de alta disponibilidade compartilhando configuraçoẽs comuns e artefatos de software.
É uma camada tecnologica que permite que um grupo de conatiners formem um cluster de alta disponibilidade compartilhando configuraçoẽs comuns e artefatos de software.
É uma camada tecnologica que permite que um grupo de conatiners formem um cluster de alta disponibilidade compartilhando configuraçoẽs comuns e artefatos de software.
This is another expression of our ideal—the core message.
It’s the same topic, but written in a way that is more conversational. It’s easier to use as inspiration for marketing material.
These are just two of what will be many, many variations and iterations of this messaging. We have a lot of different resources, from a copy and a BU perspective.
And that’s important—addressing each customer or potential customer with the message (or portion of the message) that’s appropriate to them.
Managing the Fabric Server&apos;s IP address and hostname
The IP address and hostname associated with the Fabric Servers in the Fabric ensemble are of critical importance to the fabric. Because these IP addresses and hostnames are used for configuration and service discovery (through the Zookeeper registry), they must not change during the lifetime of the fabric.
In some cases (for example, when creating a fabric on a multi-homed host) it is preferable to specify the Fabric Server&apos;s IP address explicitly when you create the fabric. You can manually specify the IP address at the time you create a fabric, by specifying the --resolver and --manual-ip options, as follows:
JBossFuse:karaf@root&gt; fabric:create --resolver manualip --manual-ip CustomIPAddress
--zookeeper-password admin --wait-for-provisioning
Where --resolver manualip sets the local resolver policy to manualip (which means that, for this Fabric Server only, you are specifying the IP address explicitly) and CustomIPAddress is the custom IP address you want to use.
For more details about resolver policies, see section &quot;Description&quot; in &quot;Console Reference&quot;section &quot;Description&quot; in &quot;Console Reference&quot; and section &quot;Description&quot; in &quot;Console Reference&quot;section &quot;Description&quot; in &quot;Console Reference&quot;.
Fabric creation process
Several things happen when a fabric is created from a standalone container:
The container installs the requisite OSGi bundles to become a Fabric Server.
The Fabric Server starts a registry service, which listens on IP port 2181 (which makes fabric configuration data available to all of the containers in the fabric).
The Fabric Server installs a new JAAS realm (based on the ZooKeeper login module), which overrides the default JAAS realm and stores its user data in the ZooKeeper registry.
The new Fabric Ensemble consists of a single Fabric Server (the current container).
A default set of profiles is imported from InstallDir/fabric/import (can optionally be overridden).
After the standalone container is converted into a Fabric Server, the previously installed OSGi bundles and Karaf features are completely cleared away and replaced by the default Fabric Server configuration. For example, some of the shell command sets that were available in the standalone container are no longer available in the Fabric Server.
This is another expression of our ideal—the core message.
It’s the same topic, but written in a way that is more conversational. It’s easier to use as inspiration for marketing material.
These are just two of what will be many, many variations and iterations of this messaging. We have a lot of different resources, from a copy and a BU perspective.
And that’s important—addressing each customer or potential customer with the message (or portion of the message) that’s appropriate to them.