Jboss7或者wildfly部署war包的问题 1
1.Jboss的日志系统(standalone模式) 在介绍案例分析之前先来介绍一下Jboss提供的日志系统,下载EAP的zip包解压后的结构如下:
在standalone目录下有两个文件standalone.xml和logging.properties,eap启动时会读取并解析standalone.xml文件。
在standalone.xml这份配置文件中有关于日志子系统的相关配置,基本结构如下所示: <subsystem xmlns="urn:jboss:domain:logging:1.3"> <console-handler name="CONSOLE"> <level name="DEBUG"/> <formatter> <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> </console-handler> <periodic-rotating-file-handler name="FILE" autoflush="true"> <formatter> <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> </formatter> <file relative-to="jboss.server.log.dir" path="server.log"/> <suffix value=".yyyy-MM-dd"/> <append value="true"/> </periodic-rotating-file-handler> <logger category="com.arjuna"> <level name="WARN"/> </logger> <logger category="org.apache.tomcat.util.modeler"> <level name="WARN"/> </logger> <logger category="org.jboss.as.config"> <level name="DEBUG"/> </logger> <logger category="sun.rmi"> <level name="WARN"/> </logger> <logger category="jacorb"> <level name="WARN"/> </logger> <logger category="jacorb.config"> <level name="ERROR"/> </logger> <root-logger> <level name="DEBUG"/> <handlers> <handler name="CONSOLE"/> <handler name="FILE"/> </handlers> </root-logger> </subsystem> 在eap解析到这个subsystem之前,jboss会使用logging.properties中的配置进行日志输出,一旦eap解析完成这个subsystem就会由其来接管日志输出这项工作,另外如果subsystem中的内容被修改,则其修改会被反应到logging.properties中,因而修改日志配置,最好是修改subsystem中的内容而不是logging.properties。 logging subsystem中的日志配置有多种模式,下面给出三种: console-handler 控制台显示 periodic-rotating-file-handler 定期新建一个log文件 size-rotating-file-handler 满足指定大小就重新新建一个log文件
2. 案例分析 在实际部署运行的系统经常是跑在物理机的一个虚拟机中,而且应用服务器(例如Jboss)通常不会只有一个war包而是会有多个,如果使用subsystem的日志输出方式,日志输出会杂在一起,对排查问题没有多大帮助,反而会让人找不到方向,最好是能够让war包自己管理自己的日志输出(当然是在单机模式下,如果是集群的话还是交给Jboss吧),这样不仅便于我们修改日志配置(总是感觉修改jboss的subsystem不是那么方便),还能得到特定应用的全部日志输出。 经过一番搜索找到了一个解决方案,通过一个启动参数关闭Jboss对日志的托管 <span style="white-space:pre"> </span>-Dorg.jboss.as.logging.per-deployment=false 将其加入jre的启动参数中,eap启动时会检测这个参数,如果其值为false则关闭对应用日志的接管,这样应用就可以控制自己的日志输出了。有两种方式来使用这个参数,一个是利用eap的启动过程(就是其启动脚本)中加载的配置,在其中加入对这个参数的使用,另一个是写一个脚本控制jre与eap的启动。 (1)利用eap的启动配置
在standalone.conf中添加下面这一行 <span style="white-space:pre"> </span>JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.as.logging.per-deployment=false"
(2)jre启动脚本 在linux系统中使用shell脚本控制jre以及eap的启动是很方便的,写一个这样的脚本在jre的启动命令中添加上述参数就可以实现将应用自己控制log的输出,脚本样本如下: kill -9 `ps aux | grep -v 'awk' |awk '/jboss-eap-6.2/{print $2}'`echo 'kill jboss service'rm -rf ./*.logrm -rf ./nohup.outecho 'clean log files'rm -rf /usr/jboss/jboss-eap-6.2/standalone/tmp/vfs/rm -rf /usr/jboss/jboss-eap-6.2/standalone/tmp/work/echo 'clean tmp workspace'/bin/cp -f ./example.war /usr/jboss/jboss-eap-6.2/standalone/deployments/echo 'copy ams.war to workspace'sleep 1snohup /usr/jboss/jboss-eap-6.2/bin/standalone.sh -Dorg.jboss.as.logging.per-deployment=false -b 192.168.2.160 &echo 'start nohup job'sleep 1stail -f ./nohup.out使用脚本启动时,需要注意如果当前系统中已经运行了一个Jboss服务了则需要先清除(关闭或者杀掉进程)之前的服务,然后如果有必要可以清除之前应用生成的log文件,如果不希望之前应用的缓存对新的应用造成影响,可以把Jboss的缓存清空,之后就可以将war包拷贝到Jboss的deployments目录下,拷贝完成后进行jre及eap的启动,使用nohup命令进行任务托管,并附上控制log托管的参数配置,脚本执行到这里,如果想要观察启动的过程可以使用tail命令监控nohup的输出,脚本运行过程基本就是这个流程,当然也可以添加其它的条件判断比如war包是否存在等。 --------------------- 作者:北海飞舞 来源:CSDN 原文:https://blog.csdn.net/liupin_2011/article/details/42388907?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
Jboss7或者wildfly部署war包的问题 1的更多相关文章
- Jboss7或者wildfly部署war包的问题
		
如果在Jboss7或者wildfly中部署war包是遇到类似如下错误: "{"JBAS014671: Failed services" => {"jbos ...
 - tomcat本地部署war包的方式
		
最近学习java,在本地tomcat部署时,主要采取以下方式: 一.本地构建生成war包 在本地项目中的terminal下,使用命令 “mvn clean install”或 先执行“mvn clea ...
 - Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
		
Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...
 - Docker容器Tomcat部署war包
		
在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run -d --nam ...
 - 持续集成之Jenkins自动部署war包到远程服务器
		
一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...
 - weblogic安装部署war包——windows
		
### weblogic安装部署war包——windows#### 下载weblogic安装包[csdn下载地址](https://download.csdn.net/download/luozhua ...
 - tomcat快速部署War包操作
		
Linux快速部署War包操作,暂时是最简单的操作 1.先关闭Tomcat /home/java/tomcat7/bin/shutdown.sh 2.进入War包存放目录(可以通过工具:SSH Sec ...
 - 如何在阿里云上部署war包到tomcat服务器
		
一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...
 - 如何在windows上部署war包到tomcat服务器
		
一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...
 
随机推荐
- .net 中 C# 简单自定义事件实现
			
个人认为事件处理机制是一种很好的机制 特别是可以方便安全的实现窗口间(子窗口对父窗口,子窗口间等)的消息传递.功能调用 下面展现的源自以前论坛上看到的一套方法,可能记得不大准确,所以可能不规范,我的理 ...
 - 【详解】ThreadPoolExecutor源码阅读(一)
			
系列目录 [详解]ThreadPoolExecutor源码阅读(一) [详解]ThreadPoolExecutor源码阅读(二) [详解]ThreadPoolExecutor源码阅读(三) 工作原理简 ...
 - Java 容器源码分析之HashMap多线程并发问题分析
			
并发问题的症状 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题.后来,我们的程序性能有问题,所以需要变成多 ...
 - 大数据技术之_08_Hive学习_05_Hive实战之谷粒影音(ETL+TopN)+常见错误及解决方案
			
第10章 Hive实战之谷粒影音10.1 需求描述10.2 项目10.2.1 数据结构10.2.2 ETL原始数据10.3 准备工作10.3.1 创建表10.3.2 导入ETL后的数据到原始表10.3 ...
 - GCD之后台程序运行
			
点击Home键进入后台时进行计时,直到从新启动,超过三分钟启动手势 // // AppDelegate.m // GCDDown // // Created by City--Online on 15 ...
 - 并发编程—— FutureTask 源码分析
			
1. 前言 当我们在 Java 中使用异步编程的时候,大部分时候,我们都会使用 Future,并且使用线程池的 submit 方法提交一个 Callable 对象.然后调用 Future 的 get ...
 - C#  集合  特殊集合
			
一集合 1.可为不同类型,不固定长度 2.集合类型分为泛型集合(强类型集合)与非泛型集合(弱类型集合). 3.非泛型集合的类和接口位于using System.Collections命名空间. 4.泛 ...
 - Java读取excel(兼容03和07格式)
			
读取excel,首先需要下载POI的jar,可以去官网下,也可以在这里下载 一.简单说明 excel2003和excel2007区别比较大,最直观的感受就是扩展名不一样,哈哈 不过,使用POI的API ...
 - hadoop_完全分布式配置
			
注:此文章所写内容完全在虚拟机配置,系统:centos,jdk和hadoop已经安装完成所配集群包括hadoop01,hadoop02,hadoop03,hadoop04四台,ip分别为:192.16 ...
 - influxdb-1.7.2.x86_64安装 install influxdb-1.7.2.x86_64 on RedHat & CentOS
			
1.下载安装 wget http://dl.influxdata.com/influxdb/releases/influxdb-1.7.2.x86_64.rpm https://portal.infl ...