comment faire pour créer la source de données à l'aide de chameau?

Je viens de commencer l'apprentissage de Apache Camel. J'ai compris les bases de Routes et de Composants. Maintenant, je veux donner un essai en se connectant à la base de données Oracle, la lecture des enregistrements d'une table et d'écrire les enregistrements d'un fichier à l'aide de File composant. À lire à partir de la base de données je suppose que j'ai besoin d'utiliser JDBC composant et de donner la dataSourceName.

Cependant, je ne pouvais pas trouver toutes les informations sur la façon de créer une source de données à l'aide de chameau. Toutes les infos que j'ai trouvé sur ce thème utilise Printemps DSL exemples. Je n'utilise pas le Printemps, et j'ai juste besoin de le tester à l'aide de cette simple application Java autonome.

Je suis en utilisant JDK7u25 avec Apache Camel 2.12.1.

Quelqu'un peut s'il vous plaît poster un exemple de lecture à partir de la table oracle et écrire dans un fichier?

[MODIFIER]

Après avoir vérifié plusieurs solutions sur le web, j'ai découvert deux approches suivantes:

  1. À dos de dromadaire pour exécuter en tant qu' autonome. Voici mon code:
    import javax.sql.DataSource;    
    import org.apache.camel.main.Main;
    import org.apache.camel.builder.RouteBuilder;
    import org.apache.commons.dbcp.BasicDataSource;
    
    public class JDBCExample {
    
        private Main main;
    
        public static void main(String[] args) throws Exception {
            JDBCExample example = new JDBCExample();
            example.boot();
        }
    
        public void boot() throws Exception {
            //create a Main instance
            main = new Main();
            //enable hangup support so you can press ctrl + c to terminate the JVM
            main.enableHangupSupport();
    
            String url = "jdbc:oracle:thin:@MYSERVER:1521:myDB";
            DataSource dataSource = setupDataSource(url);
    
            //bind dataSource into the registery
            main.bind("myDataSource", dataSource);
    
            //add routes
            main.addRouteBuilder(new MyRouteBuilder());
    
            //run until you terminate the JVM
            System.out.println("Starting Camel. Use ctrl + c to terminate the JVM.\n");
            main.run();
        }
    
        class MyRouteBuilder extends RouteBuilder {
            public void configure() {
                String dst = "C:/Local Disk E/TestData/Destination";
                from("direct:myTable")
                   .setBody(constant("select * from myTable"))
                   .to("jdbc:myDataSource")
                    .to("file:" + dst);
            }
        }
    
        private DataSource setupDataSource(String connectURI) {
            BasicDataSource ds = new BasicDataSource();
            ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
            ds.setUsername("sa");
            ds.setPassword("devon1");
            ds.setUrl(connectURI);
            return ds;
        }
    }
  2. À l'aide de l'approche évoquée par Claus lbsen. Voici le nouveau code:
    import javax.sql.DataSource;
    import org.apache.camel.CamelContext;
    import org.apache.camel.impl.DefaultCamelContext;
    import org.apache.camel.impl.SimpleRegistry;
    import org.apache.camel.main.Main;
    import org.apache.camel.builder.RouteBuilder;
    import org.apache.commons.dbcp.BasicDataSource;
    
    public class JDBCExample {
    
        private Main main;
    
        public static void main(String[] args) throws Exception {
            String url = "jdbc:oracle:thin:@MYSERVER:1521:myDB";
            DataSource dataSource = setupDataSource(url);
    
            SimpleRegistry reg = new SimpleRegistry() ;
            reg.put("myDataSource",dataSource);
    
            CamelContext context = new DefaultCamelContext(reg);
            context.addRoutes(new JDBCExample().new MyRouteBuilder());
            context.start();
            Thread.sleep(5000);
            context.stop();
        }
    
        class MyRouteBuilder extends RouteBuilder {
            public void configure() {
                String dst = "C:/Local Disk E/TestData/Destination";
                from("direct:myTable")
                   .setBody(constant("select * from myTable"))
                   .to("jdbc:myDataSource")
                    .to("file:" + dst);
            }
        }
    
        private static DataSource setupDataSource(String connectURI) {
            BasicDataSource ds = new BasicDataSource();
            ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
            ds.setUsername("sa");
            ds.setPassword("devon1");
            ds.setUrl(connectURI);
            return ds;
        }
    }

Mais dans les deux cas, je suis en dessous exception:

Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: jdbc://myDataSource due to: No component found with scheme: jdbc
    at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:534)
    at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:63)
    at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:192)
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:106)
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:112)
    at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:61)
    at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:55)
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:500)
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:213)
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:909)
    ... 12 more
[Thread-0] INFO org.apache.camel.main.MainSupport$HangupInterceptor - Received hang up - stopping the main instance.
Hey Parag, j'ai même exigence, je suis en utilisant la même base de code que vous avez posté, mais je ne suis pas d'obtenir quelque chose en chemin mentionné.toute modification est exigée sur le même code? J'ai vérifié ma source de données et la connexion est établie. S'il vous plaît aider. si nécessaire, je vais poster mon code.

OriginalL'auteur ParagJ | 2013-10-14