Je viens de commencer à apprendre Apache Camel. J'ai compris les bases des itinéraires et des composants. Maintenant, je veux essayer d'essayer en se connectant à la base de données Oracle, en lisant des enregistrements d'une table en particulier et écrivez ces enregistrements à un fichier à l'aide de code> composant code>. Pour lire de la base de données, je suppose que je dois utiliser le composant Cependant, je n'ai pas pu trouver d'informations sur la création d'une source de données utilisant chameau. Toutes les informations que j'ai trouvées liées à cette rubrique utilisent des exemples DSL de printemps. Je n'utilise pas le printemps et j'ai juste besoin de tester cela à l'aide d'une application java autonome simple. P> J'utilise JDK7U25 avec Apache Camel 2.12.1. P> Quelqu'un peut-il poster un échantillon lire à partir de la table Oracle et écrire dans un fichier? p> Après avoir vérifié plusieurs solutions sur le Web, j'ai appris à connaître la suite Deux approches: p> chameau à courir comme autonome . Voici mon code: P>
Utilisation de l'approche mentionnée par Claus Lbsen. Voici le code à nouveau: p>
jdbc code> et donner le fichier
datasourcename code>.
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.
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;
}
}
3 Réponses :
Le printemps a été mentionné là-bas simplement parce que c'est un paradigme très utile de travailler avec dB (principalement à cause de Modèles introduits par Spring Framework .) Bien sûr, vous pouvez connecter la norme JDBC connexion et implémentez DAO par vous-même - rien de mal à cela. P>
Il y a l'exemple SQL qui montre comment configurer un oui cet exemple à l'aide de printemps XML. Mais comment vous configurez la source de données peut également être effectué dans le code Java. Ensuite, vous devez enregistrer la DataSource dans le registre de chameau. P> Par exemple, vous pouvez utiliser un Voici un pseudo code montrant le principe, de créer un registre, ajoutez vos haricots dans ce registre, puis fournissez le registre au constructeur de DataSource code>
JnDireGyRy code> ou le
Simpleegistry code>. Ce dernier est plus facile. P>
defaultcamelcontext code> . P>
SimpleRegistry registry = new SimpleRegistry();
// code to create data source here
DateSource ds = ...
registry.put("myDataSource", ds);
CamelContext camel = new DefaultCamelContext(registry);
LBSEN: Merci pour les informations. Oui, j'ai testé avec ça à l'aide de SimpleeGistry, mais je reçois une exception. S'il vous plaît voir la question, je l'ai mis à jour.
Vous devez ajouter un jar Camel-JDBC à la classe de classe et les dépendances de Camel-JDBC. Si vous utilisez Maven qui est facile, sinon, vous devrez peut-être télécharger et ajouter plus de pots manuellement.
Pour les utilisateurs OSGI - Caractéristique: Installez CAMEL-JDBC
Si stupide moi! Je n'avais pas inclus Camel-jdbc-2.12.1.jar dans la classe de classe. Maintenant, au-dessus des exemples de travail. P>
Hey Parag, j'ai une exigence similaire, j'utilise la même base de code que vous avez posté, mais je ne reçois rien dans le chemin mentionné. Les modifications sont nécessaires sur le même code? J'ai vérifié mon DataSource et mon connexion est établie. S'il vous plaît aider. Si nécessaire, je posterai mon code.