20.5.1 运行远程客户端应用

远程客户端应用程序(remote client application)需要在IDE中运行,你需要使用跟将要连接的远程应用相同的classpath运行org.springframework.boot.devtools.RemoteSpringApplication,传参为你要连接的远程应用URL。例如,你正在使用Eclipse或STS,并有一个部署到Cloud Foundry的my-app工程,远程连接该应用需要做以下操作:

  • Run菜单选择Run Configurations…
  • 创建一个新的Java Application启动配置(launch configuration)。
  • 浏览my-app工程。
  • org.springframework.boot.devtools.RemoteSpringApplication作为main类。
  • https://myapp.cfapps.io作为参数传递给RemoteSpringApplication(或其他任何远程URL)。

运行中的远程客户端看起来如下:

  1. . ____ _ __ _ _
  2. /\\ / ___'_ __ _ _(_)_ __ __ _ ___ _ \ \ \ \
  3. ( ( )\___ | '_ | '_| | '_ \/ _` | | _ \___ _ __ ___| |_ ___ \ \ \ \
  4. \\/ ___)| |_)| | | | | || (_| []::::::[] / -_) ' \/ _ \ _/ -_) ) ) ) )
  5. ' |____| .__|_| |_|_| |_\__, | |_|_\___|_|_|_\___/\__\___|/ / / /
  6. =========|_|==============|___/===================================/_/_/_/
  7. :: Spring Boot Remote :: 1.4.1.RELEASE
  8. 2015-06-10 18:25:06.632 INFO 14938 --- [ main] o.s.b.devtools.RemoteSpringApplication : Starting RemoteSpringApplication on pwmbp with PID 14938 (/Users/pwebb/projects/spring-boot/code/spring-boot-devtools/target/classes started by pwebb in /Users/pwebb/projects/spring-boot/code/spring-boot-samples/spring-boot-sample-devtools)
  9. 2015-06-10 18:25:06.671 INFO 14938 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a17b7b6: startup date [Wed Jun 10 18:25:06 PDT 2015]; root of context hierarchy
  10. 2015-06-10 18:25:07.043 WARN 14938 --- [ main] o.s.b.d.r.c.RemoteClientConfiguration : The connection to http://localhost:8080 is insecure. You should use a URL starting with 'https://'.
  11. 2015-06-10 18:25:07.074 INFO 14938 --- [ main] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
  12. 2015-06-10 18:25:07.130 INFO 14938 --- [ main] o.s.b.devtools.RemoteSpringApplication : Started RemoteSpringApplication in 0.74 seconds (JVM running for 1.105)

因为远程客户端使用的classpath跟真实应用相同,所以它能直接读取应用配置,这就是spring.devtools.remote.secret如何被读取和传递给服务器做验证的。

强烈建议使用https://作为连接协议,这样传输通道是加密的,密码也不会被截获。

如果需要使用代理连接远程应用,你需要配置spring.devtools.remote.proxy.hostspring.devtools.remote.proxy.port属性。