2013-10-14 15 views
7

मैंने अभी अपाचे कैमल सीखना शुरू कर दिया है। मैं रूट्स और घटकों की मूल बातें समझ गया। अब मैं ओरेकल डेटाबेस से कनेक्ट करके, एक विशेष तालिका से रिकॉर्ड पढ़ने और File घटक का उपयोग करके उन रिकॉर्ड्स को फ़ाइल में लिखकर कोशिश करना चाहता हूं। डेटाबेस से पढ़ने के लिए मुझे लगता है कि मुझे JDBC घटक का उपयोग करने की आवश्यकता है और dataSourceName दें।ऊंट का उपयोग कर डेटासोर्स कैसे बनाएं?

हालांकि, मुझे ऊंट का उपयोग करके डेटा स्रोत बनाने के बारे में कोई जानकारी नहीं मिली। इस विषय से संबंधित सभी जानकारी स्प्रिंग डीएसएल उदाहरणों का उपयोग करती है। मैं वसंत का उपयोग नहीं करता और मुझे बस सरल स्टैंडअलोन जावा एप्लिकेशन का उपयोग करके इसका परीक्षण करने की आवश्यकता है।

मैं अपाचे कैमल 2.12.1 के साथ जेडीके 7 यू 25 का उपयोग कर रहा हूं।

क्या कोई ऑरैक टेबल से पढ़ने और फ़ाइल में लिखने के लिए नमूना पोस्ट कर सकता है?

  1. कैमल standalone के रूप में चलाने के लिए:

    [संपादित करें]

    वेब पर कई समाधान की जाँच के बाद, मैं दो दृष्टिकोण निम्नलिखित बारे में पता चला। यहां मेरा कोड है:

    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. क्लॉस lbsen द्वारा उल्लिखित दृष्टिकोण का उपयोग करना।

    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; 
        } 
    } 
    

लेकिन दोनों ही मामलों मैं अपवाद नीचे हो रही है में:

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. 
+0

हे पैराग, मेरे पास समान आवश्यकता है, मैं आपके द्वारा पोस्ट किए गए कोड कोड का उपयोग कर रहा हूं लेकिन मुझे पथ में कुछ भी नहीं मिल रहा है। उसी कोड पर कई बदलावों की आवश्यकता है? मैंने अपने डेटासोर्स की जांच की और कनेक्शन स्थापित किया गया।कृपया मदद करे। यदि आवश्यक हो तो मैं अपना कोड पोस्ट करूंगा। – Jayesh

उत्तर

2

तो मुझे मूर्खतापूर्ण! मैंने क्लासस्पैट में ऊंट-जेडीबीसी-2.12.1.jar शामिल नहीं किया था। अब उदाहरण के ऊपर काम करते हैं।

0

स्प्रिंग वहाँ उल्लेख किया गया था सिर्फ इसलिए कि यह डीबी साथ काम करने का बहुत ही उपयोगी प्रतिमान (है यहाँ फिर से कोड है मुख्य रूप से templates introduced by Spring Framework के कारण।) बेशक आप मानक JDBC कनेक्शन को हुक कर सकते हैं और स्वयं द्वारा डीएओ लागू कर सकते हैं - इसके साथ कुछ भी गलत नहीं है।

5

एसक्यूएल उदाहरण जो कैसे सेटअप एक DataSource

हाँ कि वसंत XML का उपयोग उदाहरण से पता चलता है। लेकिन जावा कोड में डेटासोर्स को कैसे सेट किया जा सकता है। फिर आपको ऊंट रजिस्ट्री में डेटासोर्स पंजीकृत करने की आवश्यकता है।

उदाहरण के लिए आप JndiRegistry या SimpleRegistry का उपयोग कर सकते हैं। उत्तरार्द्ध आसान है।

यहां कुछ छद्म कोड है जो एक रजिस्ट्री बनाने का सिद्धांत दिखा रहा है, इस रजिस्ट्री में अपने सेम जोड़ें, और फिर रजिस्ट्री को DefaultCamelContext के निर्माता को प्रदान करें।

SimpleRegistry registry = new SimpleRegistry(); 

// code to create data source here 
DateSource ds = ... 

registry.put("myDataSource", ds); 

CamelContext camel = new DefaultCamelContext(registry); 
+0

एलबीएसएन: जानकारी के लिए धन्यवाद। हां, मैंने सरल रजिस्ट्री का उपयोग करके इसका परीक्षण किया लेकिन मुझे अपवाद मिल रहा है। कृपया सवाल देखें, मैंने इसे अपडेट किया है। – ParagJ

+0

आपको क्लासपाथ में ऊंट-जेडीबीसी जेएआर, और ऊंट-जेडीबीसी की निर्भरताओं को जोड़ने की जरूरत है। यदि आप मेवेन का उपयोग करते हैं जो आसान है, यदि नहीं, तो आपको मैन्युअल रूप से और अधिक JAR डाउनलोड और जोड़ने की आवश्यकता हो सकती है। –

+0

ओएसजीआई उपयोगकर्ताओं के लिए - सुविधा: ऊंट-जेडीबीसी स्थापित करें –

संबंधित मुद्दे