这是我的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");
我的错误是什么以及如何解决?