Jboss部署war以及获取Resource的真实路径

最近在将一个SpringBoot项目打成war包部署到Jboss中,中途遇到一些问题记录。

Jboss上部署war

普通的SpringBoot项目目录结构如下

.
├── src
   └── main
      ├── java
      └── resources

当我们打出war包后,想在Jboss中部署时需要添加jboss-deployment-structure.xml文件

关于此文件的配置可参考Jboss as 7 Developer Guide

加入后目录结构如下

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   ├── resources
│   │   │   ├── application.yml
│   │   │   └── META-INF
│   │   └── webapp
│   │   └── WEB-INF
│   │   ├── jboss-deployment-structure.xml
│   │   └── jboss-web.xml

jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<!-- 需要排除的 -->
<exclusions>
<module name="javax.validation.api" />
<module name="org.hibernate.validator" />
<!--Log4j exclude-->
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions> <!-- 需要依赖的模块 -->
<dependencies>
<!-- This one always goes last. -->
<module name="javax.api" export="true"/>
</dependencies>
</deployment>
</jboss-deployment-structure>

jboss-web.xml

<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
<jboss-web>
<context-root>app</context-root>
</jboss-web>

Jboss中获取Resource的真实路径

在使用过程中,因为在Resouce中放了一些文件,需要去获取文件内容

最开始使用如下方法去获取

// vfs:/content/app.war/WEB-INF/classes/data/data.yaml
new ClassPathResource("data/data.yaml")).getURI()

当我尝试创建一个File时报错找不到

因此借助JBoss VFS去获取当前资源的真实路径

MAVEN中添加

        <!-- JBoss is using Virtual File System (VFS) -->
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-vfs</artifactId>
<version>3.2.14.Final</version>
</dependency>

具体使用:


VirtualFile content = (VirtualFile) this.getClass().getClassLoader().getResource("data/data.yaml").getContent(); // $JBOSS_HOME/tmp/vfs/temp/tempc755413fe36e407c/app.war-64dfd9c1b9e1463e/WEB-INF/classes/data/data.yaml
String realPath = content.getPhysicalFile().getPath()

参考

JBoss VFS

VFS3 User Guide

Jboss as 7 Developer Guide

StackOverflow:Not getting absolute file path from resources

Jboss部署war以及获取Resource的真实路径的更多相关文章

  1. JSTL获取Session的ID与获取文件的真实路径与项目名称

    今天在测试集群配置的时候想到session共享,因此想要获取sessionID,可以通过下面方法: ${pageContext.session.id} 获取文件的真实路径: <%=request ...

  2. 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径

    最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...

  3. Java Web获取Web应用根路径

    最基本的 1,request.getRealPath("/");这个方法已不推荐用 2,在Servlet 里用this.getServletContext().getRealPat ...

  4. spring中获取当前项目的真实路径

    总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...

  5. 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解

    ========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...

  6. Weblogic部署web项目获取项目根目录为null

    写在前面 图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败. 问题代码 String real ...

  7. 三种远程部署war包检测

    简介 远程部署漏洞属于服务器.中间件配置问题,攻击者可通过远程部署漏洞获取系统权限,远程部署漏洞经常出现在Tomcat.Jboss.Weblogic等web容器之上. 0x01 ### tomcat部 ...

  8. 获取用户的真实ip

    常见的坑有两个: 一.获取的是内网的ip地址.在nginx作为反向代理层的架构中,转发请求到php,java等应用容器上.结果php获取的是nginx代理服务器的ip,表现为一个内网的地址.php获取 ...

  9. 持续集成之Jenkins自动部署war包到远程服务器

    一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...

随机推荐

  1. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...

  2. python unittest套件加载用例时,出现No tests were found,Empty test suite

    错误信息: 之前运行好好的脚本,突然报No tests were found,Empty test suite,详情错误信息如下所示: Launching pytest with arguments ...

  3. 008 webpack的其他使用方式

    一:配置 1.配置文件 每次修改main文件,重新打包都要指定入口与出口,比较费事,可以使用配置文件的方式 在根目录下新建webpack.config.js: const path = require ...

  4. c# winform访问 带有windows身份验证的webservice

    1 将webservice设置为windows身份验证iis10中,要确认已安装windows身份验证在 控制面板 - >打开或关闭Windows功能 - >万维网服务 - >安全性 ...

  5. pm2 工具来管理 node 服务端

    如下: nodeServer.js 'use strict'; const http = require('http'); const server = http.createServer(funct ...

  6. Docker 安装 redis 并实现配置文件启动,数据文件本地持久化

    1,笔者使用的是 Linux 的 Centos7 版本  2,安装 Docker,不会安装可以移步 Docker 在 Linux 平台的安装 以及一些常见命令 3,下载 docker 镜像 3.1,首 ...

  7. jxls:用jx:if实现字典值格式化

    用JXLS导出excel非常方便,但是我们往往需要把字典值转为中文名称,例如1转为男,这个时候就需要用到jx:if来完成. 请见下图: jx:if(condition="obj.way==1 ...

  8. 【电商日志项目之五】数据分析-MR方式

    环境 hadoop-2.6.5 hbase-0.98.12.1-hadoop2 新增用户指标分析(1)用户分析模块 (2)浏览器分析模块 根据分析效果图,找出分析的维度:用户分析是指某个时间段内的数量 ...

  9. vs2019 中文离线安装包下载

    1. 通过在https://visualstudio.microsoft.com/zh-hans/downloads/ 下载VS2019, 之后会下载vs_enterprise__78682482.1 ...

  10. 【视频开发】四大图像库:OpenCV/FreeImage/CImg/CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...