场景描述在开发中,一直使用的RollingFileAppender,但是存在几个问题:
这个appender是按照序号作为后缀来命名日志文件的,生产中日志较为频繁的情况下,根据发生时间定位问题日志需要全局grep,耗费时间并且对业务运行有一定的影响。
rolling的时候会统一将所有已经存在的日志文件序号向后偏移,即原来是test.log、test.log.1,现在变成了test.log(新建的
...
如何用jstack命令分析java应用的性能问题
前言在进行WCG项目优化的时候,性能测试的效果一直不理想。于是乎进行性能分析,除了查找内存、CPU等基本的参数之外,还从业务角度入手,查找了日志打印出来的时间,按照报文的时间进行分析对比。其中一项就是用jstack分析线程的情况。这里记录一下整个分析的过程以及收获。
整体过程
首先用jps查看java应用的进程号
然后根据进程号查找java中各个线程的情况,命令如下:
1top -Hp [pid]
...
我的书单
Http KeepAlive的理解
本篇结合资料,阐述了Http协议中的keep alive的理解。
HttpClient使用实践
本篇主要总结在HttpClient使用过程中的最佳实践、注意点以及踩到的坑。
Java程序和Jvm编码机制的分析
本文起源于一次测试环境下构造报文发送时对于java编码的疑惑,经过查找资料和分析总结而成。对于JVM和Java代码中的编码问题和原理进行了较为深入的分析。如有错漏,欢迎指正。
Java Webservice实践(3)在tomcat容器中发布webservice服务
Java Webservice实践(2)构建Webservice客户端
概述
总体而言,构建Webservice的方式有很多种,概括起来可以分为以下几种:
- 通过Stub的方式,用工具生成客户端的代理,具体的工具可以细分为很多:
a. jdk1.6+/bin中自带工具:wsimport
b. cxf/bin中的工具:wsdl2java
c. axis/bin中工具 - 通过CXF动态调用:
a. DynamicClientFactory
b. JaxWsDynamicClientFactory - 通过Axis动态调用:
a. Service.createCall() - 通过HTTPURLConnection的方式调用(手动组装SOAP报文)
- 通过SOAPConnection的方式调用
Java Webservice实践(1)构建简单的Webservice服务
JAX-WS
JAX-WS(Java API for XML Web Services),是SOAP协议的一个Java的实现规范,这个新规范是为了简化基于SOAP的Java开发。JAX-WS规范其实就是一组XMLweb services的JAVA API,JAX-WS允许开发者可以选择RPCoriented或者message-oriented来实现自己的web services。通过使用Java™ API for XMLWeb Services (JAX-WS) 技术设计和开发 Web服务,可以带来很多好处,能简化 Web 服务的开发和部署,并能加速 Web 服务的开发。
JAX-WS将本地的远程调用转换为XML协议(一般为SOAP格式),从而开发者不需要编写任何SOAP组装消息代码;同样,在服务端的JAX-WS会将SOAP消息解析为具体的函数调用,并返回结果。