通过main方法运行

Cloudopt Next是通过main方法启动服务器并运行的,这是一个标准的方法,它遵循Java对于一个应用程序入口点的约定。在服务器启动后Cloudopt Next将会自动监听设置好的端口(默认是8080)。通过run方法获取到项目的路径后,Cloudopt Next会自动扫描项目中所有的文件并自动注册。代码如下:

1. fun main(args: Array<String>) {
2. CloudoptServer.run(App::class)
3. }
1. public static void main(String[] args){
2. CloudoptServer.run(App.class);
3. }

run方法中您可以填入启动类的类名、包名,如果什么都不填的话将会自动读取配置文件来获取包名。

通过包名启动

1. fun main(args: Array<String>) {
2. CloudoptServer.run("net.cloudopt.next.example")
3. }
1. public static void main(String[] args){
2. CloudoptServer.run("net.cloudopt.next.example");
3. }

通过配置文件启动

如果您希望省略参数的话,请务必在配置文件中配置好包名,具体可参考配置文件。

1. fun main(args: Array<String>) {
2. CloudoptServer.run()
3. }
1. public static void main(String[] args){
2. CloudoptServer.run();
3. }

控制台输出

如果您启动成功的话会看到类似下面的控制台输出:

1. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO:  ______  __      ______  __  __  _____   ______  ______  ______
2. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: /\  ___\/\ \    /\  __ \/\ \/\ \/\  __-./\  __ \/\  == \/\__  _\
3. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: \ \ \___\ \ \___\ \ \/\ \ \ \_\ \ \ \/\ \ \ \/\ \ \  _-/\/_/\ \/
4. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO:  \ \_____\ \_____\ \_____\ \_____\ \____-\ \_____\ \_\     \ \_\
5. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO:   \/_____/\/_____/\/_____/\/_____/\/____/ \/_____/\/_/      \/_/
6. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO:
7. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: Java Version: 1.8.0_242
8. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: Java Provider: Eclipse OpenJ9
9. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: System: Mac OS X
10. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: Time: 2020-04-06 21:01:19
11. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: Listener Port: 9090
12. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: -------------------------------------------------------------------------------------------
13. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: [FAILURE HANDLER] Registered failure handler:net.cloudopt.next.web.handler.DefaultErrorHandler
14. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: [HANDLER] Registered handler:net.cloudopt.next.web.handler.ShowRouteHandler
15. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: [HANDLER] Registered handler:net.cloudopt.next.web.handler.CorsHandler
16. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: [HANDLER] Registered handler:net.cloudopt.next.web.handler.CookieCorsHandler
17. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: [HANDLER] Registered handler:net.cloudopt.next.web.handler.WafHandler
18. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: ==========================================================================================================
19. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: 🐋 Cloudopt Next started is success!
20. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: http://127.0.0.1:8080
21. [Cloudopt Next] 2020-04-06 21:01:19 net.cloudopt.next.web.CloudoptServer [INFO ] - ℹ️ INFO: ==========================================================================================================

控制台输出包含两个部分,第一个部分是Banner,第二个部分是会输出注册成功的路由、Handler等等。如果您需要替换Banner,只需要在项目的resource文件夹下新建一个banner.txt即可。为了帮助您更好的输出Banner,Cloudopt Next支持自动替换Banner中的变量,目前Cloudopt Next支持以下变量:

1. Java Version: ${java.version}
2. Java Provider: ${java.vendor}
3. System: ${os}
4. Time: ${time}

热部署

Cloudopt Next 内置了热部署,在使用前你需要先开启 IDE 的热部署相关设置。在运行设置中将 Main Class 设置为 net.cloudopt.next.web.CloudoptLauncher ,Program arguments 设置为放置了 CloudoptServer.run() 的类即可。默认会监测项目中的 class 文件发生变动时会自动重启 CloudoptServer。

如果你是用 Kotlin 的话可能会出现重启较慢的问题,可以考虑设置成增量更新,或者是手动编译修改的文件。

完整例子

为了方便您的学习和使用,我们提供了一个简单的Example,您可以通过访问GitHub获取。