6 Replies Latest reply on Mar 13, 2009 1:06 PM by martinmurphy

    Failed to generate jbi.xml

    nicolas-duminil

      Greetings,

       

      I'm using FuseESB 3.3.1.13 on SLES 10 with Ganymede and the m2eclipse plugin with maven 2.0.9. While trying to build the attached pom I've got:

       

      Failed to generate jbi.xml: org.apache.servicemix.maven.plugin.jbi.JbiPluginException: Unable to generate service unit descriptor!

      org.apache.servicemix.maven.plugin.jbi.JbiPluginException: Unable to generate service unit descriptor!

           at org.apache.servicemix.maven.plugin.jbi.GenerateServiceUnitDescriptorMojo.generateJbiDescriptor(GenerateServiceUnitDescriptorMojo.java:206)

      ...........................

      The full log is attached.

       

      I'm looking forward for any help.

       

      Many thanks in advance,

       

      Nicolas

        • 1. Re: Failed to generate jbi.xml
          martinmurphy

          Can you also attach

          file:////home/nicolas/workspace/jms2jms/jms-consumer-su/src/main/resources/xbean.xml

          • 2. Re: Failed to generate jbi.xml
            nicolas-duminil

            Sure.

             

            Kind regards,

             

            Nicolas

            • 3. Re: Failed to generate jbi.xml
              nicolas-duminil

              Did you see anything ?

              • 4. Re: Failed to generate jbi.xml
                martinmurphy

                I should have spotted this originally, there is a couple of problems in your pom.xml.

                 

                You have two dependencies on different versions of the JMS component:

                 

                <dependencies>
                    <dependency>
                      <groupId>org.apache.servicemix</groupId>
                      <artifactId>servicemix-jms</artifactId>
                      <version>${servicemix-version}</version>
                    </dependency>
                    <dependency>
                      <groupId>org.apache.servicemix</groupId>
                      <artifactId>servicemix-jms</artifactId>
                      <version>2008.01</version>
                    </dependency>
                </dependencies>
                

                 

                You should just leave this as the one version:

                 

                 

                <dependencies>
                    <dependency>
                      <groupId>org.apache.servicemix</groupId>
                      <artifactId>servicemix-jms</artifactId>
                      <version>${servicemix-version}</version>
                    </dependency>
                </dependencies>
                

                 

                Also, if you want to use the fuse version of the product you will need to update the version property for this:

                <properties>
                    <!--You are depending on the Apache version:
                    <servicemix-version>3.2.2</servicemix-version>
                     This is the 3.3.1.13 fuse version (you can upgrade to 14 if you wish) : -->
                    <servicemix-version>3.3.1.13-fuse</servicemix-version>
                </properties>
                

                 

                Finally, the repos are currently pointing to the Apache version. You need to update these if you wish to use the FUSE versions:

                 

                <pluginRepositories>
                     <pluginRepository>
                          <id>open.iona.m2</id>
                          <name>IONA Open Source Community Release Repository</name>
                          <url>http://repo.open.iona.com/maven2</url>
                          <snapshots>
                               <enabled>false</enabled>
                          </snapshots>
                          <releases>
                               <enabled>true</enabled>
                          </releases>
                     </pluginRepository>
                     <pluginRepository>
                          <id>open.iona.m2-snapshot</id>
                          <name>IONA Open Source Community Snapshot Repository</name>
                          <url>http://repo.open.iona.com/maven2-snapshot</url>
                          <snapshots>
                               <enabled>true</enabled>
                          </snapshots>
                          <releases>
                               <enabled>false</enabled>
                          </releases>
                     </pluginRepository>
                </pluginRepositories>
                <repositories>
                     <repository>
                          <id>open.iona.m2</id>
                          <name>IONA Open Source Community Release Repository</name>
                          <url>http://repo.open.iona.com/maven2</url>
                          <snapshots>
                               <enabled>false</enabled>
                          </snapshots>
                          <releases>
                               <enabled>true</enabled>
                          </releases>
                     </repository>
                     <repository>
                          <id>open.iona.m2-snapshot</id>
                          <name>IONA Open Source Community Snapshot Repository</name>
                          <url>http://repo.open.iona.com/maven2-snapshot</url>
                          <snapshots>
                               <enabled>true</enabled>
                          </snapshots>
                          <releases>
                               <enabled>false</enabled>
                          </releases>
                     </repository>
                </repositories>
                

                 

                In general I would recommend that you add things like the properties and repositories to a top level or parent pom and then you don't have to add them in each project after that. You would also have a single location to control this.

                 

                Edited by: martinmurphy on Mar 6, 2009 11:21 AM

                • 5. Re: Failed to generate jbi.xml
                  nicolas-duminil

                  Martin,

                   

                  Thanks for the answer. Modifying the pom in order to comply to your first remark (the double dependency) doesn't change anything as:

                   

                  for  I got the same exception (Failed to generate jbi.xml)

                   

                  For the other remarks, the question is not wether or not I want to use the fuse version (even if I believe that fuse is servicemix and using fuse means using servicemix). No, the only thing I want is to have correctly generated poms by the provided archetypes. And the archetypes provided with fuse generate poms not using fuse version of the product.

                   

                  Now if you're saying that the provided archetypes are not working properly and one needs to manually modify the generated poms, well, in this case, I don't beleive that this a reliable working method and I would certainly prefer using completelly integrated solutions like, for example, NetBeans with OpenESB and Glassfish, which makes completely transparent this kind of details.

                   

                  Concerning the repository definition, you're completelly right. Why, in this case, the archetypes are generating them in the wrong place ?

                   

                  So, I don't know what to say but, if using fuse means writing pom "ad manum", then I don't beleive that we can seriously think at using fuse yet.

                   

                  What do you think ?

                   

                  Kind regards,

                   

                  Nicolas

                  • 6. Re: Failed to generate jbi.xml
                    martinmurphy

                    Nicolas, sorry I just noticed this was never replied to. I would like to follow up to ensure that there is no mis-understanding for anyone reading this post.

                     

                    It seems that you are using the Apache archetypes and then mixing your FUSE installation. Since this is a FUSE forum I will of course recommend using the FUSE version of the component

                     

                    Yes, the FUSE ESB release is very similar to the Apache ServiceMix release. Note though that it goes through further testing and a Progress internal release cycle before being released. This means that it is built against specific other FUSE Products (Services Framework, Message Broker and Mediation Router), that way you can be sure of interoperability. Once a FUSE release is available you can deploy using this, safe in the knowledge that you can get it patched commercially if needed to resolve any production or development issues in your product.

                     

                    I have checked the archetypes provided in FUSE ESB and they do have the correct dependency on the FUSE version. Note that all this is doing is allowing you to create a maven project. You can then take advantage of third party eclipse open source eclipse plugins such as m2eclipse, or subclipse. In this case we have spoken of m2eclipse.

                     

                    Regarding the incorrect repository definition, I believe this is caused because you are using the Apache ServiceMix archetypes and not the FUSE ESB archetypes. Your requirement to modify the poms should seems to be driven by this fact.

                     

                    Using these archetypes you are using the m2eclipse plugin, this is not provided as part of the FUSE range - rather this is available from sonatype.org. That is not to say it doesn't work well with FUSE. I have this installed and use it every day.

                     

                    If you are looking for features above and beyond this in your eclipse integration, such as designing EIP flows for the camel component then you should look at the FUSE Integration Designer, this is our UI integration project with eclipse. You can look forward to more and more features being added to this in the coming months.