Jboss部署war以及获取Resource的真实路径
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()
参考
StackOverflow:Not getting absolute file path from resources
Jboss部署war以及获取Resource的真实路径的更多相关文章
- JSTL获取Session的ID与获取文件的真实路径与项目名称
今天在测试集群配置的时候想到session共享,因此想要获取sessionID,可以通过下面方法: ${pageContext.session.id} 获取文件的真实路径: <%=request ...
- 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径
最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...
- Java Web获取Web应用根路径
最基本的 1,request.getRealPath("/");这个方法已不推荐用 2,在Servlet 里用this.getServletContext().getRealPat ...
- spring中获取当前项目的真实路径
总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...
- 【SpringBoot】单元测试进阶实战、自定义异常处理、t部署war项目到tomcat9和启动原理讲解
========================4.Springboot2.0单元测试进阶实战和自定义异常处理 ============================== 1.@SpringBoot ...
- Weblogic部署web项目获取项目根目录为null
写在前面 图片上传功能, web项目部署在本地Tomcat上并没有问题, 但是打成war包部署到Linux服务器Weblogic下却出现如题问题, 导致图片上传失败. 问题代码 String real ...
- 三种远程部署war包检测
简介 远程部署漏洞属于服务器.中间件配置问题,攻击者可通过远程部署漏洞获取系统权限,远程部署漏洞经常出现在Tomcat.Jboss.Weblogic等web容器之上. 0x01 ### tomcat部 ...
- 获取用户的真实ip
常见的坑有两个: 一.获取的是内网的ip地址.在nginx作为反向代理层的架构中,转发请求到php,java等应用容器上.结果php获取的是nginx代理服务器的ip,表现为一个内网的地址.php获取 ...
- 持续集成之Jenkins自动部署war包到远程服务器
一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...
随机推荐
- html5 css3 背景视频循环播放代码
<div style ="position: absolute; z-index: -1; top: 0px; left: 0px; bottom: 0px; right: 0px; ...
- NoSql数据库Redis系列(5)——Redis主从复制
前面介绍Redis,我们都在一台服务器上进行操作的,也就是说读和写以及备份操作都是在一台Redis服务器上进行的,那么随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都 ...
- idea在使用git clone 时出现Filename too long
idea在使用git clone 时出现Filename too long的报错信息,使用如下命令就可以解决该问题:在 git bash命令模式下,运行命令 git config --global c ...
- Spark2.x(五十六):Queue's AM resource limit exceeded.
背景: 按照业务需求将数据拆分为60份,启动60个application分别运行对每一份数据,application的提交脚本如下: #/bin/sh #LANG=zh_CN.utf8 #export ...
- ora-8176原因及解决方法
在oracle undo_retention范围内,且_undo_autotune=false的情况下,一个语句执行的时候仍然发生ora-8176,语句如下: INSERT INTO XXX SELE ...
- PHP session_start() open failed: Permission denied session 无法使用的问题
日志显示报错如下: PHP message: PHP Warning: session_start(): open(/) 报错显示无法打开 seesion 文件,没有权限,所以需要给 /var/lib ...
- linux环境中,openssl升级及openresty中nginx基于新版本openssl重新编译
需求说明: 最近在对系统进行安全扫描的时候,出现了openssl版本的问题,建议对openssl版本进行升级,在此记录下升级过程. 环境说明: 操作系统:RHEL 6.6 升级操作过程: 1.下载最新 ...
- (转)关于sql和MySQL的语句执行顺序(必看!!!)
原文:https://blog.csdn.net/u014044812/article/details/51004754 https://blog.csdn.net/j080624/article/d ...
- osg指定向量旋转指定角度
向量AB,沿着n旋转10度 osg::Vec3 left = AB*osg::Matrix::rotate(osg::inDegrees(10), n); osg::Vec3 right = AB*o ...
- hibernate的load和get有什么作用
① load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常(ObjectNotFoundException)load方法加载实体对象的时候,根据 ...