IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGI / Camel] Plate-forme minimale


Sujet :

OGSi Java

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut [OSGI / Camel] Plate-forme minimale
    Bonjour à tous.

    Je travaille à ce jour sur la mise en place d'une plateforme OSGI-Camel.

    J'ai déjà évalué plusieurs produits comme servicemix, fuseEsb, etc.

    Dans la doc de Camel, lorsqu’il s'agit d'OSGI on est renvoyé vers servicemix.
    J'utilise fuse, et aucun problème à signaler.

    Devant déployer un grand nombre de composants Camel ayant beaucoup de choses en commun j'ai un ensemble de bundles que je partage entre tous ces composants.

    Du coup en terme de déploiement de la plateforme j'évalue la possibilité de faire ma propre distribution contenant tous ces éléments.

    Je suis parti de fuse. Mais ne voulant pas écarter d'autres approches trop vite, j'ai aussi fait un projet à partir de servicemix, et un autre à partir du code source de servicemix.

    Rapidement, je me suis aperçu que ces projets embarquaient beaucoup d'éléments dont je n'ai pas besoin.

    Étant dans l'optique de faire une distribution personnalisée, je donc repris tout ça à partir de zéro. Au lieu de partir d'une distribution servicemix, fuse ou autre, je ne suis parti de rien.
    J'ai construit un assemblage de Karaf personnalisé qui pour le moment embarque Karaf, les outils d'admin, jaas, orb, camel-blueprint, et activemq.

    Pour le moment ça marche plutôt bien. Par rapport à servicemix, je n'ai pas des choses que je n'utilise pas du tout comme nmr, jbi, ...

    Bref je m’oriente vers une plateforme ultra light (en rapport à servicemix-minimal).

    Parmi vous, y en a-t-il certains qui ont essayé de faire une "karaf custom distribution" ?

    Personellement je suis partit de la doc de Karaf qui est pleinne d'erreurs sur ce point.
    Dans le pon la doc définie une propriété
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <karaf.version>2.2.2</karaf.version>
    qui n'est pas utilisé du coup il à des incohérences.
    les chemins son donné en absolut
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    /x1/asf/kar227/manual/src/main/filtered-resources
    à la place de
    Code shell : Sélectionner tout - Visualiser dans une fenêtre à part
    src/main/filtered-resources
    le featrues descriptor donné n'existe pas
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <descriptor>mvn:org.apache.karaf/apache-karaf/2.2.7/xml/features</descriptor>
    il faut utiliser
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <descriptor>mvn:org.apache.karaf.assemblies.features/standard/${project.version}/xml/features</descriptor>
    <descriptor>mvn:org.apache.karaf.assemblies.features/enterprise/${project.version}/xml/features</descriptor>

    Il y a ce genre de petites erreurs dans tout l'exemple de la doc.
    Après pas mal de recherches, je me suis écarté de la doc sur la partie org.apache.karaf.features.cfg. J'ai comme dit dans la doc défini mon propre fichier feature et c'est le seul que j'ai référencé dans org.apache.karaf.features.cfg. À lui d'inclure tout ce que doit embarquer la plateforme. C’est beaucoup plus simple.

    Enfin pour la partie assembly j'ai quelque peut dû modifier l'exemple pour qu'il fonctionne.
    Par exemple ajouter un « exclude » pour gérer le pb des fichiers *.formatted qui se retrouve dans la distribution.

    Je pense donc que je vais finir par avoir un projet Karaf custom distribution ne contenant que le minimum pour déployer des routes Camel. Dans lequel je référencerait les features de mon projets principal.

    Je ne sais pas si c'est la distribution que nous retiendrons au final. Mais je pense que cette expérience est (pour moi) riche s'enseignements.

    Je pense donc revenir ici vous faire part de celle-ci.
    A+JYT

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour.
    Comme promis, je reviens vous donner les résultats de cette petite expérience.

    Je vous plante le décor : j'ai un projet «Hermes» dans lequel de nombreuses Routes Camel doivent être déployées. La solution retenue est de déployer des bundles osgi dans un ou des conteneurs karaf.

    Pour que cela fonctionne il nous faut karaf et quelques éléments supplémentaires. Les bundles camel pour tourner sous osgi ont leurs propres exigences.

    La documentation de Camel pour les déploiements osgi propose de s'en remettre à ServiceMix. J’ai utilisé cette solution pendant toute la première phase du projet. Au pire ServiceMix peut nous servir de plateforme. Mais serviceMix est un ESB et pour simplement déployer des routes camel c'est peut-être beaucoup de composants dans la plateforme pour rien.

    J'ai donc cherché à faire une plateforme perso. La principale difficulté que j'ai rencontrée est le choix des versions. En effet quelques éléments de camel ne fonctionnaient pas dans les versions choisies. Alors que ce sont celles qui se trouve dans servicemix/fuseesb. En fait tant servicemix, que fuse, ont patché quelques composants de camel pour éviter de passer à la version supérieure ce qui implique pour eux des évolutions dans leurs propres codes.

    je suis donc parti sur les versions suivantes :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        <activemq-version>5.5.1</activemq-version>
        <camel-version>2.8.1</camel-version>
        <cxf-version>2.6.0</cxf-version>
     
        <felix-obr-version>1.6.4</felix-obr-version>
     
        <aries-version>0.3</aries-version>
        <karaf-version>2.2.2</karaf-version>
     
        <maven-resources-plugin>2.5</maven-resources-plugin>
        <!-- use utf-8 encoding -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    1) étape créer un projet d'assemblage de karaf. la doc http://karaf.apache.org/manual/2.2.7...tribution.html est bien utile même si l'exemple proposé est plein d'erreurs.
    j'ai décidé de placer les "features" à embarquer dans la distribution dans le fichier features.xml. la doc propose d'en déclarer une partie dans le pom. les mettres dans features permet de construire une plateforme minimale (sans aucun ajout autre que karaf) est d'ajouter par la suite les élements nécéssaires sans avoir à retoucher son pom.

    créer le fichier pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
      <!-- le parent ne défini que la version et contient la liste des modules du projet -->
      <parent>
      	<groupId>org.sekaijin.hermes</groupId>
      	<artifactId>hermes</artifactId>
      	<version>1.0.0-SNAPSHOT</version>
      </parent>
     
      <artifactId>hermes-karaf</artifactId>
      <packaging>pom</packaging>
      <name>Hermes :: Custom Karaf Distribution</name>
     
      <properties>
        <activemq-version>5.5.1</activemq-version>
        <camel-version>2.8.1</camel-version>
        <cxf-version>2.6.0</cxf-version>
     
        <felix-obr-version>1.6.4</felix-obr-version>
     
        <aries-version>0.3</aries-version>
        <karaf-version>2.2.2</karaf-version>
     
        <maven-resources-plugin>2.5</maven-resources-plugin>
        <!-- use utf-8 encoding -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      </properties>
     
      <dependencies>
        <dependency>
          <groupId>org.apache.karaf</groupId>
          <artifactId>apache-karaf</artifactId>
          <version>${karaf-version}</version><!-- Utiliser les propriétés erreur de la doc karaf -->
          <type>tar.gz</type>
        </dependency>
        <dependency>
          <groupId>org.apache.karaf</groupId>
          <artifactId>apache-karaf</artifactId>
          <version>${karaf-version}</version>
          <type>zip</type>
        </dependency>
        <dependency>
          <groupId>org.apache.karaf.assemblies.features</groupId>
          <artifactId>standard</artifactId>
          <version>${karaf-version}</version>
          <type>xml</type>
          <classifier>features</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.karaf.assemblies.features</groupId>
          <artifactId>enterprise</artifactId>
          <version>${karaf-version}</version>
          <type>xml</type>
          <classifier>features</classifier>
        </dependency>
      </dependencies>
     
      <build>
        <resources>
          <resource>
            <directory>${basedir}/src/main/filtered-resources</directory>
            <filtering>true</filtering>
            <includes>
              <include>**/*</include>
            </includes>
          </resource>
        </resources>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${maven-resources-plugin}</version>
            <executions>
              <execution>
                <id>filter</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>resources</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <phase>package</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>target/classes/features.xml</file>
                      <type>xml</type>
                      <classifier>features</classifier>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>features-maven-plugin</artifactId>
            <version>${karaf-version}</version>
            <executions>
              <execution>
               <id>add-features-to-repo</id>
               <phase>generate-resources</phase>
               <goals>
                 <goal>add-features-to-repo</goal>
               </goals>
               <configuration>
                  <descriptors>
                    <!-- on n'utilise que le fichier features du projet -->
                    <descriptor>file:${basedir}/target/classes/features.xml</descriptor>
                </descriptors>
                <features>
                    <!--<feature>cxf</feature>
                    <feature>obr</feature>
                    <feature>config</feature>-->
                    <feature>hermes-ressources</feature>
                </features>
                <!--<includeMvnBasedDescriptors>true</includeMvnBasedDescriptors>-->
                <repository>target/repo</repository>
               </configuration>
               <!--<inherited>false</inherited>-->
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <!-- ceci référence le projet qui redéini l'écran d'acceuil de karaf -->
              <!-- il n'est pas obligatoire. si on ne le met pas "karaf" s'affiche au demarrage -->
              <execution>
                <id>copy</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                   <!-- Define here the artifacts which should be considered in the assembly -->
                   <!-- For instance, the branding jar -->
                   <artifactItems>
                     <artifactItem>
                        <groupId>org.sekaijin.hermes</groupId>
                        <artifactId>hermes-branding</artifactId>
                        <version>${project.version}</version>
                        <outputDirectory>target/dependencies</outputDirectory>
                     </artifactItem>
                   </artifactItems>
                </configuration>
              </execution>
     
              <!-- a partir d'ici par rapport à l'exemple de la doc 
                     on produit un zip pour windows et un tar.gz pour unix -->
     
              <execution>
                <!-- Uncompress the standard Karaf distribution -->
                <id>unpack</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.karaf</groupId>
                      <artifactId>apache-karaf</artifactId>
                      <type>tar.gz</type>
                      <outputDirectory>target/dependencies/unix</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
              <execution>
                <!-- Uncompress the standard Karaf distribution -->
                <id>unzip</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>unpack</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.karaf</groupId>
                      <artifactId>apache-karaf</artifactId>
                      <type>zip</type>
                      <outputDirectory>target/dependencies/win</outputDirectory>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>unix-bin</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/descriptors/unix-bin.xml</descriptor>
                  </descriptors>
                  <finalName>hermes-${project.version}</finalName>
                  <appendAssemblyId>false</appendAssemblyId>
                  <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
              </execution>
              <execution>
                <id>windows-bin</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/descriptors/windows-bin.xml</descriptor>
                  </descriptors>
                  <finalName>hermes-${project.version}</finalName>
                  <appendAssemblyId>false</appendAssemblyId>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
        <pluginManagement>
        	<plugins>
        		<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        		<plugin>
        			<groupId>org.eclipse.m2e</groupId>
        			<artifactId>lifecycle-mapping</artifactId>
        			<version>1.0.0</version>
        			<configuration>
        				<lifecycleMappingMetadata>
        					<pluginExecutions>
        						<pluginExecution>
        							<pluginExecutionFilter>
        								<groupId>
        									org.apache.karaf.tooling
        								</groupId>
        								<artifactId>
        									features-maven-plugin
        								</artifactId>
        								<versionRange>
        									[2.2.2,)
        								</versionRange>
        								<goals>
        									<goal>
        										add-features-to-repo
        									</goal>
        								</goals>
        							</pluginExecutionFilter>
        							<action>
        								<ignore></ignore>
        							</action>
        						</pluginExecution>
        					</pluginExecutions>
        				</lifecycleMappingMetadata>
        			</configuration>
        		</plugin>
        	</plugins>
        </pluginManagement>
      </build>
    </project>

    A+JYT

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    La définition de la plateforme. créer les dossiers comme spécifié dans la doc karaf.
    2)
    créer le fichier src/main/filtered-resources/features.xml
    il va contenir une référence à tous les fichiers features dont nous avons besoin
    et définir une feature propre au projet. elle ne contient rien mais est là pour vous permettre de définir des bundle à déployer au démarage de la plateforme.
    toutes les features définies dans ce fichier apparaitront avec la commande features:list
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <features name="hermes">
        <repository>mvn:org.apache.karaf.assemblies.features/standard/${karaf-version}/xml/features</repository>
        <repository>mvn:org.apache.karaf.assemblies.features/enterprise/${karaf-version}/xml/features</repository>
        <repository>mvn:org.apache.activemq/activemq-karaf/${activemq-version}/xml/features</repository>
        <repository>mvn:org.apache.camel.karaf/apache-camel/${camel-version}/xml/features</repository>
     
        <feature name="hermes-ressources" version="${project.version}" resolver="(obr)" start-level='50'>
        </feature>
    </features>
    vous pouvez définir toutes le features de votre choix.
    Attention la doc indique dans le pom
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <descriptor>mvn:org.apache.karaf/apache-karaf/2.2.7/xml/features</descriptor>
    comme expliqué précédemement je l'ai placé dans features.xml mais il y a un erreur. Ces features n'existe pas. Il faut en réalité utiliser
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <repository>mvn:org.apache.karaf.assemblies.features/standard/${karaf-version}/xml/features</repository>
    <repository>mvn:org.apache.karaf.assemblies.features/enterprise/${karaf-version}/xml/features</repository>
    ajouter le fichier etc/org.apache.karaf.features.cfg celui-ci référence votre fichier feature pour indiquer à karaf qu'il doit les charger et indique la liste des features à installer
    Code properties : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #
    # Comma separated list of features repositories to register by default
    #
    featuresRepositories=mvn:fr.aphp.ati.eai.hermes/hermes-karaf/${project.version}/xml/features
     
    #
    # Comma separated list of features to install at startup
    #
    featuresBoot=config,ssh,management,camel,camel-blueprint,hermes-ressources

    la doc de karaf indique ensuite de placer un dossier etc avec tous les fichiers conf dans src/main/distribution.
    le problème avec cette façon de faire et que les fichier seront copier sans aucune vérification.
    J'ai donc placé tous les fichiers indiqués dans src/main/filtered-resources/etc ainsi il passe par les filtres de l'assemblage et on peut agir sur des variables de substitusion.

    Copier simplement les contenus des fichiers. il suffit juste de remplacer "my-costom" ou "my-customer" par le nom de votre distribution (pour moi "hermes")

    on a :
    • etc/org.ops4j.pax.logging.cfg

    • etc/system.properties

    • etc/users.properties

    • etc/custom.properties

    Attention à cette liste de fichiers. nous en repalerons dans les fichiers d'assemblage.
    si vous avez installé une distribution karaf vous constaterez qu'il y en a d'autres.
    si par défaut un de ces autres fichiers doit être modifié pourque votre distribution fonctionne. faites en une copie dans ce dossier et modifiez le.

    A+JYT

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    les fichier d'assemblage.
    la doc karaf indique de créer le fichier : src/main/descriptors/bin.xml
    en lieu et place pour pouvoir faire une distribution pour windows et une pour unix j'ai créé deux fichiers : src/main/descriptors/unix-bin.xml et src/main/descriptors/windows-bin.xml
    l'exemple de la doc est peu ou prou correct
    utiliser les propriété du projet en lieu et place des numéro de verions
    Attention au premier fileset il corresponds au fichiers que vous avez placé dans etc. si vous excluez un fichier que vous n'avez pas mis dans le dossier il sera manqant et karaf ne fonctionnera pas. si au contraire vous oubliez d'exclure un fichier que vous avez placé dans etc. l'assemblage placera votre fichier et celui de karaf dans le zip ou le tar.gz du coup impossible de savoir celui-qui sera déployé.
    dernier point sur l'assemblage le jar Branding si vous n'en avez pas il faut retirer le fileset correspondant dans le fichier d'assemblage.
    unix-bin.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <assembly>
     
        <id>unix-bin</id>
     
        <formats>
            <format>tar.gz</format>
        </formats>
     
        <fileSets>
     
            <!-- Expanded Karaf Standard Distribution -->
            <fileSet>
                <directory>target/dependencies/unix/apache-karaf-${karaf-version}</directory>
                <outputDirectory>/</outputDirectory>
                <excludes>
                    <exclude>**/demos/**</exclude>
                    <exclude>bin/**</exclude>
                    <exclude>etc/java.util.logging.properties</exclude>
                    <exclude>etc/custom.properties</exclude>
                    <exclude>etc/system.properties</exclude>
                    <exclude>etc/users.properties</exclude>
                    <exclude>etc/org.apache.karaf.features.cfg</exclude>
                    <exclude>etc/org.apache.karaf.management.cfg</exclude>
                    <exclude>etc/org.apache.karaf.log.cfg</exclude>
                    <exclude>etc/org.ops4j.pax.logging.cfg</exclude>
                    <exclude>LICENSE</exclude>
                    <exclude>NOTICE</exclude>
                    <exclude>README</exclude>
                    <exclude>RELEASE-NOTES</exclude>
                    <exclude>karaf-manual*.html</exclude>
                    <exclude>karaf-manual*.pdf</exclude>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
     
            <!-- Copy over bin/* separately to get the correct file mode -->
            <fileSet>
                <directory>target/dependencies/unix/apache-karaf-${karaf-version}</directory>
                <outputDirectory>/</outputDirectory>
                <includes>
                    <include>bin/admin</include>
                    <!--<include>bin/karaf</include>-->
                    <include>bin/start</include>
                    <include>bin/stop</include>
                </includes>
                <fileMode>0755</fileMode>
            </fileSet>
     
            <!-- Copy over jar files -->
            <fileSet>
                <directory>target/dependencies</directory>
                <includes>
                    <include>hermes-branding-${project.version}.jar</include>
                </includes>
                <outputDirectory>/lib/</outputDirectory>
            </fileSet>
     
            <fileSet>
                <directory>src/main/distribution</directory>
                <outputDirectory>/</outputDirectory>
                <fileMode>0644</fileMode>
                <excludes>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
            <fileSet>
                <directory>target/classes/etc</directory>
                <outputDirectory>/etc/</outputDirectory>
                <lineEnding>unix</lineEnding>
                <fileMode>0644</fileMode>
                <excludes>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
     
            <fileSet>
                <directory>target/features-repo</directory>
                <outputDirectory>/system</outputDirectory>
            </fileSet>
     
        </fileSets>
     
        <files>
            <file>
                <source>${basedir}/target/dependencies/unix/apache-karaf-${karaf-version}/bin/karaf</source>
                <outputDirectory>/bin/</outputDirectory>
                <destName>hermes</destName>
                <fileMode>0755</fileMode>
                <lineEnding>unix</lineEnding>
            </file>
            <file>
                <source>${basedir}/target/classes/features.xml</source>
                <outputDirectory>/system/org/sekaijin/hermes/${project.artifactId}/${project.version}/xml/features</outputDirectory>
                <destName>${project.artifactId}-${project.version}-features.xml</destName>
                <fileMode>0644</fileMode>
                <lineEnding>unix</lineEnding>
            </file>
        </files>
     
    </assembly>
    windows-bin.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <assembly>
     
        <id>windows-bin</id>
     
        <formats>
            <format>zip</format>
        </formats>
     
        <fileSets>
     
            <!-- Expanded Karaf Standard Distribution -->
            <fileSet>
                <directory>target/dependencies/win/apache-karaf-${karaf-version}</directory>
                <outputDirectory>/</outputDirectory>
                <excludes>
                    <exclude>**/demos/**</exclude>
                    <exclude>bin/**</exclude>
                    <exclude>etc/java.util.logging.properties</exclude>
                    <exclude>etc/custom.properties</exclude>
                    <exclude>etc/system.properties</exclude>
                    <exclude>etc/users.properties</exclude>
                    <exclude>etc/org.apache.karaf.features.cfg</exclude>
                    <exclude>etc/org.apache.karaf.management.cfg</exclude>
                    <exclude>etc/org.apache.karaf.log.cfg</exclude>
                    <exclude>etc/org.ops4j.pax.logging.cfg</exclude>
                    <exclude>LICENSE</exclude>
                    <exclude>NOTICE</exclude>
                    <exclude>README</exclude>
                    <exclude>RELEASE-NOTES</exclude>
                    <exclude>karaf-manual*.html</exclude>
                    <exclude>karaf-manual*.pdf</exclude>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
     
            <!-- Copy over bin/* separately to get the correct file mode -->
            <fileSet>
                <directory>target/dependencies/win/apache-karaf-${karaf-version}</directory>
                <outputDirectory>/</outputDirectory>
                <includes>
                    <include>bin/admin.bat</include>
                    <!--<include>bin/karaf.bat</include>-->
                    <include>bin/start.bat</include>
                    <include>bin/stop.bat</include>
                </includes>
                <fileMode>0755</fileMode>
            </fileSet>
     
            <!-- Copy over jar files -->
            <fileSet>
                <directory>target/dependencies</directory>
                <includes>
                    <include>hermes-branding-${project.version}.jar</include>
                </includes>
                <outputDirectory>/lib/</outputDirectory>
            </fileSet>
     
            <fileSet>
                <directory>src/main/distribution</directory>
                <outputDirectory>/</outputDirectory>
                <fileMode>0644</fileMode>
                <excludes>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
            <fileSet>
                <directory>target/classes/etc</directory>
                <outputDirectory>/etc/</outputDirectory>
                <lineEnding>dos</lineEnding>
                <fileMode>0644</fileMode>
                <excludes>
                    <exclude>startup.properties</exclude>
                    <exclude>**/*.formatted</exclude>
                </excludes>
            </fileSet>
     
            <fileSet>
                <directory>target/features-repo</directory>
                <outputDirectory>/system</outputDirectory>
            </fileSet>
     
        </fileSets>
     
        <files>
            <file>
                <source>${basedir}/target/dependencies/win/apache-karaf-${karaf-version}/bin/karaf.bat</source>
                <outputDirectory>/bin/</outputDirectory>
                <destName>hermes.bat</destName>
                <fileMode>0755</fileMode>
                <lineEnding>dos</lineEnding>
            </file>
            <file>
                <source>${basedir}/target/classes/features.xml</source>
                <outputDirectory>/system/org/sekaijin/hermes/${project.artifactId}/${project.version}/xml/features</outputDirectory>
                <destName>${project.artifactId}-${project.version}-features.xml</destName>
                <fileMode>0644</fileMode>
                <lineEnding>dos</lineEnding>
            </file>
        </files>
     
    </assembly>

    vous remmarquerez que contrairement à la doc je n'ai pas inclus les fichiers bin/karaf et bin/karaf.bat
    vu que l'assemblage produit une commande bin/hermes et bin/hermes.bat
    je n'en vois pas l'utilité.

    A+JYT

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Le projet branding qui ne fait que définir un jar contenant un fichier texte dont le contenu est affiché au lancement de karaf.

    créer un projet maven simple
    fichier pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     
      <modelVersion>4.0.0</modelVersion>
     
     
        <parent>
            <groupId>org.sekaijin.hermes</groupId>
            <artifactId>hermes</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <relativePath>../hermes</relativePath>
        </parent>
     
        <artifactId>hermes-branding</artifactId>
        <packaging>bundle</packaging>
        <name>Hermes :: Features :: Branding Support</name>
        <description>Branding for Hermes features</description>
     
        <build>
            <resources>
                <resource>
                    <directory>${project.basedir}/src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>**/*</include>
                    </includes>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.4.3</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>2.3.4</version>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                            <Bundle-Description>${project.description}</Bundle-Description>
                            <Import-Package>*</Import-Package>
                            <Private-Package>!*</Private-Package>
                            <Export-Package>
                                org.apache.karaf.branding
                            </Export-Package>
                            <Spring-Context>*;publish-context:=false</Spring-Context>
                        </instructions>
                    </configuration>
                </plugin>
            </plugins>
            <pluginManagement>
                <plugins>
                    <!--This plugin's configuration is used to store Eclipse m2e settings 
                        only. It has no influence on the Maven build itself. -->
                    <plugin>
                        <groupId>org.eclipse.m2e</groupId>
                        <artifactId>lifecycle-mapping</artifactId>
                        <version>1.0.0</version>
                        <configuration>
                            <lifecycleMappingMetadata>
                                <pluginExecutions>
                                    <pluginExecution>
                                        <pluginExecutionFilter>
                                            <groupId>
                                                org.apache.maven.plugins
                                            </groupId>
                                            <artifactId>maven-dependency-plugin</artifactId>
                                            <versionRange>[2.1,)</versionRange>
                                            <goals>
                                                <goal>copy</goal>
                                            </goals>
                                        </pluginExecutionFilter>
                                        <action>
                                            <ignore></ignore>
                                        </action>
                                    </pluginExecution>
                                </pluginExecutions>
                            </lifecycleMappingMetadata>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>

    créer le fichier src/main/resources/org/apache/karaf/branding/branding.properties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    ################################################################################
    #
    #    Licensed to the Apache Software Foundation (ASF) under one or more
    #    contributor license agreements.  See the NOTICE file distributed with
    #    this work for additional information regarding copyright ownership.
    #    The ASF licenses this file to You under the Apache License, Version 2.0
    #    (the "License"); you may not use this file except in compliance with
    #    the License.  You may obtain a copy of the License at
    #
    #       http://www.apache.org/licenses/LICENSE-2.0
    #
    #    Unless required by applicable law or agreed to in writing, software
    #    distributed under the License is distributed on an "AS IS" BASIS,
    #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    #    See the License for the specific language governing permissions and
    #    limitations under the License.
    #
    ################################################################################
     
    welcome = \
    \u001B[36m   __    __                             \u001B[0m\n\
    \u001B[36m  |  |  |  |                           ___  \u001B[0m\n\
    \u001B[36m  |  |__|  |  ___  _ __  __  __   ___ / __|  \u001B[0m\n\
    \u001B[36m  |   __   | / _ \\| '__||  \\/  | / _ \\\\__ \\  \u001B[0m\n\
    \u001B[36m  |  |  |  ||  __/| |   | |\\/| ||  __/ __) |  \u001B[0m\n\
    \u001B[36m  |__|  |__| \\___||_|   |_|  |_| \\___||___/  \u001B[0m\n\
    \n\
    \u001B[1m  Hermes\u001B[0m (${project.version})\n\
    \n\
    Taper '\u001B[1m<tab>\u001B[0m' pour afficher la liste des commandes\n\
       et '\u001B[1m[cmd] --help\u001B[0m' pour de l'aide sur une commande.\n\
    Taper '<ctrl-d>' ou 'osgi:shutdown' pour arreter Hermes.\n
    executer simplement mvn install
    A+JYT

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    j'ai donc une plateforme karaf legère et qui référence les features camel.
    par rapport à Servicemix qui démarre avec environ 150 bundles actifs je n'ai que le stric minimum. l'installation de la feature camel dans osgi installe quelques bundles servicemix mais juste le nécéssaire. comme j'ai aussi installé camel-blueprint j'ai au total 65 bundles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    karaf@hermes-root> list
    START LEVEL 100 , List Threshold: 50
       ID   State         Blueprint      Spring    Level  Name
    [  42] [Active     ] [            ] [       ] [   60] Apache ServiceMix :: Bundles :: aopalliance (1.0.0.5)
    [  43] [Active     ] [            ] [       ] [   60] Spring Core (3.0.5.RELEASE)
    [  44] [Active     ] [            ] [       ] [   60] Spring ASM (3.0.5.RELEASE)
    [  45] [Active     ] [            ] [       ] [   60] Spring Expression Language (3.0.5.RELEASE)
    [  46] [Active     ] [            ] [       ] [   60] Spring Beans (3.0.5.RELEASE)
    [  47] [Active     ] [            ] [       ] [   60] Spring AOP (3.0.5.RELEASE)
    [  48] [Active     ] [            ] [       ] [   60] Spring Context (3.0.5.RELEASE)
    [  49] [Active     ] [            ] [       ] [   60] Spring Context Support (3.0.5.RELEASE)
    [  50] [Active     ] [            ] [       ] [   50] Apache ServiceMix :: Specs :: Activation API 1.4 (1.8.0)
    [  51] [Active     ] [            ] [       ] [   50] Apache ServiceMix :: Specs :: JAXB API 2.2 (1.8.0)
    [  52] [Active     ] [            ] [       ] [   50] Apache ServiceMix :: Specs :: Stax API 1.0 (1.8.0)
    [  53] [Active     ] [            ] [       ] [   50] Apache ServiceMix :: Bundles :: jaxb-impl (2.2.1.1_1)
    [  54] [Active     ] [            ] [       ] [   50] Commons Management (1.0)
    [  55] [Active     ] [            ] [       ] [   50] camel-core (2.8.1)
    [  56] [Active     ] [Created     ] [       ] [   50] camel-karaf-commands (2.8.1)
    [  57] [Active     ] [            ] [       ] [   60] Apache ServiceMix :: Bundles :: cglib (2.1.0.3_7)
    [  58] [Active     ] [            ] [       ] [   60] spring-osgi-io (1.2.1)
    [  59] [Active     ] [            ] [       ] [   60] spring-osgi-core (1.2.1)
    [  60] [Active     ] [            ] [       ] [   60] spring-osgi-extender (1.2.1)
    [  61] [Active     ] [            ] [       ] [   60] spring-osgi-annotation (1.2.1)
    [  62] [Active     ] [            ] [       ] [   50] geronimo-jta_1.1_spec (1.1.1)
    [  63] [Active     ] [            ] [       ] [   50] Spring Transaction (3.0.5.RELEASE)
    [  64] [Active     ] [            ] [       ] [   50] camel-spring (2.8.1)
    [  65] [Active     ] [Created     ] [       ] [   50] camel-blueprint (2.8.1)
    La liste des features est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    karaf@hermes-root> features:list
    State         Version           Name                          Repository             Description
    [installed  ] [1.0.0-SNAPSHOT ] hermes-ressources             hermes                 
    [uninstalled] [2.2.2          ] karaf-framework               karaf-2.2.2            
    [uninstalled] [2.5.6.SEC02    ] spring                        karaf-2.2.2            
    [uninstalled] [2.5.6.SEC02    ] spring-web                    karaf-2.2.2            
    [installed  ] [3.0.5.RELEASE  ] spring                        karaf-2.2.2            
    [uninstalled] [3.0.5.RELEASE  ] spring-web                    karaf-2.2.2            
    [installed  ] [1.2.1          ] spring-dm                     karaf-2.2.2            
    [uninstalled] [1.2.1          ] spring-dm-web                 karaf-2.2.2            
    [uninstalled] [2.2.2          ] wrapper                       karaf-2.2.2            
    [uninstalled] [2.2.2          ] obr                           karaf-2.2.2            
    [installed  ] [2.2.2          ] config                        karaf-2.2.2            
    [uninstalled] [7.4.2.v20110526] jetty                         karaf-2.2.2            
    [uninstalled] [2.2.2          ] http                          karaf-2.2.2            
    [uninstalled] [2.2.2          ] war                           karaf-2.2.2            
    [uninstalled] [2.2.2          ] kar                           karaf-2.2.2            
    [uninstalled] [2.2.2          ] webconsole-base               karaf-2.2.2            
    [uninstalled] [2.2.2          ] webconsole                    karaf-2.2.2            
    [installed  ] [2.2.2          ] ssh                           karaf-2.2.2            
    [installed  ] [2.2.2          ] management                    karaf-2.2.2            
    [uninstalled] [2.2.2          ] eventadmin                    karaf-2.2.2            
    [uninstalled] [2.2.2          ] jasypt-encryption             karaf-2.2.2            
    [uninstalled] [0.3            ] transaction                   karaf-enterprise-2.2.2 OSGi Transaction Manager
    [uninstalled] [0.3            ] jpa                           karaf-enterprise-2.2.2 OSGi Persistence Container
    [uninstalled] [0.3            ] jndi                          karaf-enterprise-2.2.2 OSGi Service Registry JNDI access
    [uninstalled] [0.3            ] application-without-isolation karaf-enterprise-2.2.2 
    [uninstalled] [1.3.2          ] saaj-impl                     cxf-2.4.2              
    [uninstalled] [2.4.2          ] cxf-specs                     cxf-2.4.2              
    [uninstalled] [2.2.1.1_1      ] cxf-jaxb                      cxf-2.4.2              
    [uninstalled] [3.0.5.RELEASE  ] spring-jms                    cxf-2.4.2              
    [uninstalled] [1.1.2          ] abdera                        cxf-2.4.2              
    [uninstalled] [2.4.1_1        ] opensaml                      cxf-2.4.2              
    [uninstalled] [1.6.2          ] wss4j                         cxf-2.4.2              
    [uninstalled] [2.4.2          ] cxf                           cxf-2.4.2              
    [installed  ] [2.8.1          ] camel                         camel-2.8.1            
    [installed  ] [2.8.1          ] camel-core                    camel-2.8.1            
    [installed  ] [2.8.1          ] camel-spring                  camel-2.8.1            
    [installed  ] [2.8.1          ] camel-blueprint               camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-test                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-cxf                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-cache                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-castor                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-crypto                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-http                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-http4                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-mina                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jetty                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-servlet                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jms                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jmx                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ahc                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-amqp                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-atom                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-aws                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-bam                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-bean-validator          camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-bindy                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-cometd                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-csv                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-dozer                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-eventadmin              camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-exec                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-flatpack                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-freemarker              camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ftp                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-guice                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-groovy                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-hazelcast               camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-hawtdb                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-hdfs                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-hl7                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ibatis                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-irc                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jackson                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jasypt                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jaxb                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jcr                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jing                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jibx                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jdbc                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-josql                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jpa                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-jxpath                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-juel                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-kestrel                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ldap                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-lucene                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-mail                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-msv                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-mvel                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-mybatis                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-nagios                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-netty                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ognl                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-paxlogging              camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-printer                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-protobuf                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-quartz                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-quickfix                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-restlet                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-rmi                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-routebox                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-ruby                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-rss                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-saxon                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-scala                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-script                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-sip                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-shiro                   camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-smpp                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-snmp                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-soap                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-spring-integration      camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-spring-javaconfig       camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-spring-security         camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-spring-ws               camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-sql                     camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-stream                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-string-template         camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-syslog                  camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-tagsoup                 camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-velocity                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-xmlbeans                camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-xmlsecurity             camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-xmpp                    camel-2.8.1            
    [uninstalled] [2.8.1          ] camel-xstream                 camel-2.8.1            
    [uninstalled] [5.5.1          ] activemq                      activemq-5.5.1         
    [uninstalled] [5.5.1          ] activemq-spring               activemq-5.5.1         
    [uninstalled] [5.5.1          ] activemq-blueprint            activemq-5.5.1         
    [uninstalled] [5.5.1          ] activemq-web-console          activemq-5.5.1
    Avec ça on peut faire tourner des routes camel.
    pour mon projet j'ai ajouté une features pour définir un broker active mq par défaut et quelques bundles à moi.

    notez que j'ai prévu un fichier hermes.cfg pour placer les propriétés de mes bundles.
    A+JYT

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour,

    je reviens sur ce post pour plusieurs raisons.
    la première porte sur les critiques que je formulais à propos de la doc.
    il y a effectivement des pb sur la doc. Ils sont dûs au fait que la doc est généré par maven et le pprojet qui génère cette doc à un bug. du coup les variables au lieu d'appraitre telles-que dans le document final, sont remplacés par les valeurs courrantes du projet (de doc) par maven.
    Je vais proposer un correctif pour le v3 de karaf.

    depuis ma publication il s'est passé beaucoup de choses.
    la distribution présenté ici à quelque peu évolué pour mes besoins. j'ai ajouté au passage JPA (openjpa) mais aussi hl7api (hl7api.sourceforge.net)
    le support SAP etc.

    bref ma plateforme c'est enrichie pour mes besoins propres. au passages j'ai rencontré quelques problèmes. utilisant les features définies par karaf (entreprise) je me suis retrouvé confronté à des pb de conflits entre lib qui exportaient les mêmes packages.
    entre autre le support des transactions.

    j'ai donc supprimé l'installations de certaines features (karaf entreprises) pour définir les miennes à la places.

    au final ma distribution est devenue très liée à mon projet.

    devant aussi regarder l'avenir de la plateforme j'ai commencé à préparer un changement de version (j'utilise karaf 2.2.2 et camel 2.8.1) et là je dois dire que ma distribution n'est pas très simple à définir.

    j'envisage donc de revnir à une base plus simple. mon idées est d'agir ainsi:
    définir une distribution karaf-camel dérivé de karaf totalement indépendante de mon projet
    le but gérer les versions incrémentales de karaf camel activemq et aries (le coeur de camel sur osgi)
    definir une distribution hermes dérivé de karaf-camel ajoutant les éléments propres à mon projet. J'espère ainsi pouvoir faire évoluer chaque partie à son rythme.

    j'ai donc repris mon projet de base que j'ai remanié légèrement.
    je vous en poste une toute première version (Attention je n'ai pas tout testé)

    A+JYT
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Bonjour,

    J'utilise smx3 / camel depuis quelques années maintenant et je suis en train de migrer vers smx4, je découvre donc le monde magnifique d'OSGi ;o)

    Sur le principe j'aime bien ta démarche de vouloir un environnement d'exécution minimal, même si je ne suis pas sur de comprendre le but.

    Ton projet final sera distribué et contiendra ta plateforme SMX4 minimale ? Si oui, ok, ca permet de réduire la taille de la distribution, mais sinon, les composants inutiles ne gênent pas en principe vu qu'ils ne sont pas utilisés, ni démarrés.

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    J'ai commencé par évalué pluseurs solutions du marché.
    puis je me suis concentré sur le couple karaf camel
    et pour tester j'ai utilise plusieurs distribution pour m'arrêter sur fuse (smx4)

    mais je suis dans un contexte où la plateforme sera particulièrement chargée.
    (plusieurs centaines de bundles à déployer) et surtout en terme d'exploitation vu le nombre d'élément métier à gérer j'ai chercher à décharger un maximum l'exploitant d'élement inutiles.

    ma première idée à été d'arrêter (ou de supprimer) se dont je n'ai pas besoin.
    mais rapidement j'ai constaté que le travail était plus complexe que de partir de karaf simple.

    à ce point j'ai donc installé karaf en version minimale et j'ai ajouté les éléments dont j'avais besoint pour déployer mes bundles.
    la dificulté principable est de choisir les composants qui fonctionne bien entre eux.

    restait alors le problème de la distributions dans l'entreprise. si pour chque plateforme à installer il faut intaller karaf de base puis tous les éléments nécéssaire avant de pouvoir déployer un bundle métier ça devient prohibitif.

    c'est ainsi que j'ai connecé à faire ma propre distribution.
    le but fournir un package clef en main aux exploitants de l'entreprise. la doc custom distribution de karaf était donc la meilleur approche.

    mais après un an et plusieurs versions j'ai constaté que faire évoluer la distribution n'est pas toujours simple.
    J'ai des évolution de mes composant qui servent de base à ma solution métier
    et j'ai des évolutions qui concerne les besoins des éléments entourant karaf et camel.

    d'où l'idée de séparer les deux. construire une distribution karaf camel (et les composants de base JTA par exemple)
    et une autre qui s'appui sur la première et ajout les éléments pour ma solution.
    ainsi je peux dans le premier maitriser et tester indémendement de mon projet global la distribution karaf camel.

    fondementalement elle n'est donc pas propre à mon usage mais est faite pour déployer des routes camel sur karaf. aujoud'hui pour avoir déployer un première route à partir de rien il suffit de faire unzip du package nommer l'instance karaf la démarrer et faire un features install de la route.

    je pense que l'usage est sufisement large pour le partager.
    lorsque le tout sera assez mur et qu'il interesse d'autre personne je pense que le donner à la communauté ne sera pas un problème. en attendant je partage mon expérience et mon code.

    A+JYT

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Wahoo super article !
    Quid de :
    lorsque le tout sera assez mur et qu'il interesse d'autre personne je pense que le donner à la communauté ne sera pas un problème. en attendant je partage mon expérience et mon code.

    Je demande cela parce que l'on est en train de se poser la même question et avoir un POC fonctionnel serait vraiment super

Discussions similaires

  1. [INFO]La meilleure plate forme d'agent pour java
    Par elalia dans le forum Programmation par agent
    Réponses: 5
    Dernier message: 13/04/2008, 16h42
  2. Moteur3d multi plate-forme (console)
    Par eddie1157 dans le forum Moteurs 3D
    Réponses: 23
    Dernier message: 10/04/2006, 13h24
  3. Information sur une plate forme de développement
    Par QAYS dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 21/02/2006, 15h55
  4. [Wamp] [Avis] Plate Forme de développement
    Par bor1s dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 09/11/2005, 16h54
  5. API réseau multi plates-formes style Wininet/Winsock
    Par jmmolina dans le forum Développement
    Réponses: 6
    Dernier message: 22/10/2003, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo