如何在一个AppService下同时部署运行多个Java 应用程序呢?
因为App Service的默认根目录为 wwwroot。如果需要运行多个Java 应用程序,需要在 wwwroot目录中创建独立文件夹,用于部署 Jar包 和 web.config 文件,特别注意的时:需要在web.config中指定jar包的启动指令。
如正常部署一个jar包,App Service 根目录下的文件结构如下:
web.config内容为:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="%JAVA_HOME%\bin\java.exe" arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar "%HOME%\site\wwwroot\logdemo-1.0-SNAPSHOT.jar""> </httpPlatform> </system.webServer> </configuration>
Spring Boot的代码为:
App.Java
package com.example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); public static void main(String[] args) { SpringApplication.run(App.class, args); logger.info("test java logs : info"); logger.error("test java logs : error"); logger.warn("test java logs : warn"); logger.trace("test java logs : trace" ); } }
HelloController.java
package com.example; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/") String hello() { return "Hello World!"; } @RequestMapping("/newhello") String hello2() { return "Hello World,this is hello2 result!"; } }
PS: 以上Spring Boot代码为Spring 框架默认生成的代码,只是添加了一个hello2的新接口用于测试。
使用 mvn clean package 打包为 logdemo-1.0-SNAPSHOT.jar文件,直接通过拖拽的方式,放入App Service wwwroot 目录中。 当文件上传完成后,直接访问App Service URL查看效果:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandlerapp3" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/> </handlers> <httpPlatform processPath="%JAVA_HOME%\bin\java.exe" arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar "%HOME%\site\wwwroot\app3\app.jar""> </httpPlatform> </system.webServer> </configuration>
如/app3的 Request Mapping设置必须为:
@RequestMapping("/app3") String hello() { return "Hello World!"; } @RequestMapping("/app3/newhello") String hello2() { return "Hello World,this is hello2 result!"; }
快速入门:在 Azure 应用服务中创建 Java 应用: https://docs.azure.cn/zh-cn/app-service/quickstart-java?tabs=javase&pivots=platform-windows