骆驼组件看不到数据源

时间:2018-12-05 14:39:23

标签: java spring apache-camel spring-jdbc

这是我的Java配置(Spring 3.2.4,骆驼2.13.4),它创建camelContext和dataSource

import win32serviceutil
import win32event
import socket
import servicemanager
import win32service
import keyring
class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test Service"

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        socket.setdefaulttimeout(60)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def SvcDoRun(self):
        self.ReportServiceStatus(win32service.SERVICE_RUNNING)            
        self.main()

    def main(self):         
        file = open(r"E:\books\ZPassword.txt","w")
        rc = None
        paswd=str(keyring.get_password("YourCredentialName","sowndar")) 
        while rc != win32event.WAIT_OBJECT_0:                        
            file.write(paswd)
            file.flush()
            rc = win32event.WaitForSingleObject(self.hWaitStop,5 * 1000)        
        file.write('shut down \n')
        file.close()
if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

我有junit4测试课程

@Configuration
 @ComponentScan(basePackages = "some.package.here")
 public class BeansConfig {
 @Bean
 public DataSource dataSource(){
    DataSource dataSource = new DriverManagerDataSource();
    ((DriverManagerDataSource)dataSource).setDriverClassName(driver);
    ((DriverManagerDataSource)dataSource).setUrl(url);
    ((DriverManagerDataSource)dataSource).setUsername(username);
    ((DriverManagerDataSource)dataSource).setPassword(password);
     return dataSource;
}
 @Bean
 public CamelContext camelContext() throws Exception {
    CamelContext camelContext = new DefaultCamelContext();
    return camelContext;
}
}

我的问题是我运行路线时camelContext无法看到dataSource,尽管dataSource存在并正确注入。我尝试了路线 @RunWith(CamelSpringJUnit4ClassRunner.class) @ContextConfiguration(classes = BeansConfig.class,loader = CamelSpringDelegatingTestContextLoader.class) public class CamelTestSpring { @Autowired private CamelContext camelContext; @Autowired private DataSource dataSource; @Before public void setUpContext() throws Exception { camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "1500"); camelContext.addRoutes(routeBuilder()); producerTemplate = camelContext.createProducerTemplate(); Endpoint endpoint = camelContext.getEndpoint("direct:inSql"); producerTemplate.setDefaultEndpoint(endpoint); camelContext.start(); } @After public void cleanUpContext() throws Exception { camelContext.stop(); } public RouteBuilder routeBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { from("direct:inSql").to("sql:select * from dual"); } }; } @Test public void testDatasourse() { producerTemplate.sendBody("test"); } } ,但这无济于事。

from("direct:inSql").to("sql:select * from dual?dataSource=#dataSource");

我的错误是什么以及如何解决?

0 个答案:

没有答案