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的更多相关文章

  1. Jboss7或者wildfly部署war包的问题

    如果在Jboss7或者wildfly中部署war包是遇到类似如下错误: "{"JBAS014671: Failed services" => {"jbos ...

  2. tomcat本地部署war包的方式

    最近学习java,在本地tomcat部署时,主要采取以下方式: 一.本地构建生成war包 在本地项目中的terminal下,使用命令 “mvn clean install”或 先执行“mvn clea ...

  3. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  4. Docker容器Tomcat部署war包

    在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run  -d --nam ...

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

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

  6. weblogic安装部署war包——windows

    ### weblogic安装部署war包——windows#### 下载weblogic安装包[csdn下载地址](https://download.csdn.net/download/luozhua ...

  7. tomcat快速部署War包操作

    Linux快速部署War包操作,暂时是最简单的操作 1.先关闭Tomcat /home/java/tomcat7/bin/shutdown.sh 2.进入War包存放目录(可以通过工具:SSH Sec ...

  8. 如何在阿里云上部署war包到tomcat服务器

    一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...

  9. 如何在windows上部署war包到tomcat服务器

    一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...

随机推荐

  1. es-05-获取 resthighlevelclient及api

    在6.x以前, 使用最多的是transportclient, 但在7.x会被废弃, 先说以前的创建方式: 具体可见:https://www.cnblogs.com/wenbronk/p/6383194 ...

  2. 21-hadoop-weibo推送广告

    1, tf-idf 计算每个人的词条中的重要度 需要3个mapreduce 的 job执行, 第一个计算 TF 和 n, 第二个计算 DF, 第三个代入公式计算结果值 1, 第一个job packag ...

  3. idea @Override is not allowed when implementing interface method

    转自:http://blog.csdn.net/shenya2/article/details/50460447 在编码过程发现报错:@Override is not allowed when imp ...

  4. JSP的九个隐式对象

    JSP使用脚本元素作为一种简易方法在模板数据中嵌入java代码,这些脚本元素在JSP翻译成Servlet的阶段,都被转化为Servlet中的java代码. JSP引擎在调用JSP对应的_jspServ ...

  5. 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则

    前言 楼主这个标题其实有一种作死的味道,为什么呢,这三个东西其实可以分开为三篇文章来写,但是,楼主认为这三个东西又都是高度相关的,应当在一个知识点中.在一次学习中去理解这些东西.才能更好的理解 Jav ...

  6. 使用Docker调试Asp.Net Core

    使用 Docker 进行部署 目前还是使用将发布出来的文件打包进docker镜像的形式 $ docker build -t pims . $ docker run --name pims --rm - ...

  7. .NET世界的包管理器——Nuget

    NugetServer 使用指南 为什么要使用Nuget 在我们的项目, 存在着一些公共Dll, 这些Dll被大量的项目所引用.同时这些公共dll也同时在进行版本升级, 由于缺乏版本管理,这些Dll会 ...

  8. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

  9. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)

    上一篇写到支付宝的支付,这代码copy下来就能直接用了,   我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家. 我学一个 ...

  10. 使用Druid网上监控

    0.添加依赖 <!--druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artif ...