如何解决在 tomcat 服务器上运行的 spring 引导中的请求资源不可用错误?

How to resolve the requested resource is not available error in spring boot which runs on tomcat server?

我已经在本地主机中成功 运行 我的 spring 启动应用程序。

但是当我从 CWP 面板 tomcat 服务器获得 运行 它时,我收到下面给出的错误。如何解决这个错误?在 CWP 面板 tomcat 服务器上 运行 我还需要什么吗?

我遵循的步骤

  1. 扩展主程序中的 SpringBootServletInitializer class class.

    @SpringBootApplication
    public class GDriveAppJavaApplication extends SpringBootServletInitializer {
      @Override
      protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) {
         return builder.sources(GDriveAppJavaApplication.class);
      }
     public static void main(String[] args) {
        SpringApplication.run(GDriveAppJavaApplication.class, args);
      }
    
    }
    
  2. 将打包 JAR 更新为 WAR

  3. 添加了 Tomcat 起始依赖项,范围如提供的那样

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
     </dependency>
    
  4. 应用程序属性

     server.servlet.context-path=/GDriveAppJava
    
  5. 生成 war 文件(GDriveAppJava)并复制到 tomcat 中的 webapps 文件夹,如下所示。

  1. 控制器文件

    @RestController
    @AllArgsConstructor
    public class FileController {
    
       @Autowired
       private FileManager fileManager;
    
       @Autowired
       private FileRepository fileRepository;
    
       @PostMapping(value = "/upload/{user_id}")
       public ResponseEntity<FileEntity> uploadFIle(@RequestParam("file") MultipartFile file,@PathVariable String user_id){
           FileEntity updated = fileManager.uploadFile(file, user_id);
           return new ResponseEntity<FileEntity>(updated, HttpStatus.OK);
       }
    
       @GetMapping(path="/viewByUserId/{user_id}")
       public List<FileEntity> viewByUserid(@PathVariable String user_id) 
       {
            return fileRepository.findByUserId(user_id);
       }
    
       @GetMapping("/downloadFile/{file_id}")
       public void download(@PathVariable String file_id, HttpServletResponse response) throws IOException, GeneralSecurityException {
          fileManager.downloadFile(file_id, response.getOutputStream());
       }
    
       @GetMapping(path="/viewByFileId/{file_id}")
       public List<FileEntity> viewByFileId(@PathVariable String file_id) 
       {
          return fileRepository.findByFileId(file_id);
       }
    

    }

应用程序属性

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:jdbc:mysql://${MYSQL_HOST:localhost}:3306/user123_gdriveapp
spring.datasource.username=user123//my server username
spring.datasource.password=password123//my server password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql: true


spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB

server.servlet.context-path=/GDriveAppJava







        

第 1 步:您需要生成一个 war 文件并将其部署到 tomcat 服务器。参考 https://codezup.com/deploy-spring-boot-war-to-external-tomcat/ 生成 war 文件。

步骤 2: 将 war 文件搜索到目标文件夹。然后重命名 war 文件。例如:gdapp.war。然后将 .war 文件部署到 tomcat 服务器。

步骤 3: 使用 URL 中的文件名访问应用程序。示例:gdapp/GDriveAppJava/...

注意:请确保您已正确配置数据库。