我们正在使用Spring XD执行一些批处理作业并考虑使用Spring Cloud Dataflow。为此,我想远程调试任务的执行,但我无法使其工作。
我尝试在启动SCDF服务器之前导出以下环境变量:
spring.cloud.deployer.local.javaOpts=Xdebug -Xrunjdwp:transport=dt_socket,address=12201,server=y
还尝试在调用任务时在GUI中传递参数:
app.<appname>.local.javaOpts=Xdebug -Xrunjdwp:transport=dt_socket,address=12201,server=y
似乎没有任何效果。
答案 0 :(得分:1)
我可以使用composed-task-runner
调试器模式调试SCDF发起的listen
,这也适用于您的任务。
5006
上以侦听模式在IDE中运行调试程序。 (这个项目的类路径应该有composed-task-runner
个来源,把断点放在哪里)-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
选项运行SCDF,将调试器附加到IDE中端口 5005 (附加模式)上的SCDF进程。
String javaOptsString = getValue(deploymentProperties, "javaOpts");
在JavaCommandBuilder
班级(spring-cloud-deployer-local
v.1.3.0.M2,#83}行。在IDE中跳过一次,javaOptsString
的值现在为null
。使用IDE,将javaOptsString
的值设置为
-agentlib:jdwp=transport=dt_socket,server=n,address=localhost:5006,suspend=y
在IDE中按Resume
。
如果您知道如何将javaOpts
作为任务的部署属性传递 - 您将能够在没有此噩梦的情况下以侦听模式进行调试;-)。我找不到在=
javaOpts部署属性中转义,
和-agentlib:jdwp=transport=dt_socket,server=n,address=localhost:5006,suspend=y
字符的方法。
答案 1 :(得分:0)
我们正在为本地部署人员制定改进的解决方案 - 您可以按spring-cloud/spring-cloud-dataflow#369进行跟踪。
但是,aggregate all the application logs直接存在于服务器控制台中的以下选项,这在活动开发中可能很有用。
stream deploy --name myStream --properties“deployer。* .local.inheritLogging = true”
答案 2 :(得分:0)
最后,我能够远程调试组合任务或常规任务。请按照以下步骤操作:
现在,您可以在日志中看到启动组合任务的java进程时,将使用debug参数调用它。
如果要通过添加以下属性来控制堆内存或任何java选项: deployer.composed任务-runner.local.javaOpts = Xmx2048M 请注意,'composed-task-runner'是应用程序的名称(不是任务的名称)。