2016-11-08 130 views
0

我试图使用MS SQL驱动程序与本地数据流服务器JDBC应用 jdbc --url='jdbc:sqlserver://server' --driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver 为JDBC源-XXX应用程序定制JDBC驱动程序

正如预期的那样,驾驶员是不是在classpath中,我得到 Cannot load driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver部署流时。

我也试图调用与-cp参数的数据流服务器:

java -cp "C:\path\to\msjdbc.jar " -jar spring-cloud-dataflow-server-local-1.0.1.RELEASE.jar - 同样的结果。

任何人都可以帮助解决这个问题吗?

感谢

回答

0

感谢您的建议Ilayaperumal Gopinathan,它帮助我解决了这个问题。 貌似的app.jdbc.spring.cloud.deployer.local.classpathapp.jdbc.spring.cloud.deployer.local.main的使用是无证功能,它并没有为我(以免与1.0.1.Release的)工作

我已经设法修补预先建立的JDBC启动,包括MS JDBC驱动程序遵循http://docs.spring.io/spring-cloud-stream-app-starters/docs/current-SNAPSHOT/reference/htmlsingle/#_patching_pre_built_applications的文档。

由于在1.1.0.Snapshot中已解决的此错误(https://github.com/spring-cloud/spring-cloud-dataflow/issues/748),它不适用于1.0.1.Release。

我没有必要指定任何白名单的属性,并且1.1.0.Snapshot从内部jar中正确地选取了它们。

+0

感谢Alexander试用和输入。这些功能刚添加完毕,我们会尽早处理文档。 –

1

local数据流服务器将在一个单独的进程中的应用程序,并且不使用类路径资源的应用程序。因此,我认为您需要将驱动程序添加到jdbc应用程序路径中。或者,您可以尝试在部署流时为app设置classpath本地部署者部署属性。当指定spring.cloud.deployer.local.classpath属性时,还需要指定属性spring.cloud.deployer.local.main

流创建A1 --definition “时间| JDBC”

流部署A1 --properties“app.jdbc.spring.cloud.deployer.local.classpath = /温度/ myclasspath,app.jdbc.spring .cloud.deployer.local.main =“

+0

谢谢,它确实有道理,在这种情况下应该是什么'main'? –

+0

这是应用程序的Java主应用程序类。如果你使用开箱即用的'jdbc'接收器,'app'有'rabbit'联编程序,那么你的'main'类是:'org.springframework.cloud.stream.app.jdbc.sink.rabbit。 JdbcSinkRabbitApplication'。 –

+0

我已经尝试了你的建议,但这些部署属性有些如何从'deploymentProperties'映射中分出来。我运行了远程调试器,发现它们正确地传递给'StreamDeploymentController',但是当我到达'AbstractLocalDeployerSupport :: buildExecutionCommand'方法时,它们从'AppDeploymentRequest'消失。 –