2015-12-17 2 views
0

Я пытаюсь использовать верблюд SQL: и гугл себя в этом:BasicDataSource к DataSource

import org.apache.commons.dbcp2.BasicDataSource 
import org.apache.camel.impl.{SimpleRegistry, DefaultCamelContext} 

object CamelApplication { 
    val jdbcUrl = "jdbc:mysql://host:3306" 
    val user = "test" 
    val password = "secret" 
    val driverClass = "com.mysql.jdbc.Driver" 

    // code to create data source here 
    val ds = new BasicDataSource 

    ds.setUrl(jdbcUrl) 
    ds.setUsername(user) 
    ds.setPassword(password) 
    ds.setDriverClassName(driverClass) 

    val registry = new SimpleRegistry 
    registry.put("dataSource", ds) 

    def main(args: Array[String]) = { 
    val context = new DefaultCamelContext(registry) 

    context.setUseMDCLogging(true) 
    context.addRoutes(new DlrToDb) 
    context.start() 
    Thread.currentThread.join() 
    } 
} 

и мой DlrToDb маршрут таков:

import org.apache.camel.scala.dsl.builder.RouteBuilder 

class DlrToDb extends RouteBuilder{ 

    """netty:tcp://localhost:12000?textline=true""" ==> { 
    id("DlrToDb") 
    log("sql insert coming up") 
    to("sql:insert into camel_test (msgid, dlr_body) VALUES ('some_id','test')") 
    } 
} 

т.е. когда я телнет на локальное и нажмите введите Мне хотелось бы, чтобы некоторые данные были добавлены в мою базу данных. Однако это BasicDataSource и не DataSource, так что я получаю сообщение об ошибке:

Failed to create route DlrToDb ..... 
.... due to: Property 'dataSource' is required 

ли мне нужно изменить/преобразовать из BasicDatasource, или мне нужно сделать что-то в реестр, чтобы заставить его работать?

+1

Переговоры сообщение об отсутствии недвижимости с именем 'dataSource', а не о имени класса (а' BasicDataSource' IS-A ' DataSource'); Я также задаюсь вопросом: 'registry.put (" dataSource ", ds.getConnection)' не должен быть 'registry.put (" dataSource ", ds)' –

+0

.getConnection была ошибкой, вы правы, извините. – FelixHJ

ответ

1

Вам нужно добавить параметр запроса "DataSource" в URI:

.... 
to("sql:insert into camel_test (msgid, dlr_body) VALUES ('some_id','test')?dataSource=dataSource") 
.... 
Смежные вопросы