jdk小工具jps介绍
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path.
$> jps
23991 Jps
23789 BossMain
23651 Resin
比较常用的参数:
-q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
$> jps -q ...
从对resin源码的追踪到resin配置文件中的设置,可以明确的看到,resin在设计上是提供了session id 的reuse功能,而且resin.conf默认就是打开reuse的。惭愧的是,我一直不知道......
事情要从前段时间的工作谈起,我被要求设计出一套合适的方案来解决目前公司现有的几个前台模块各自为政的问题。其中最核心的两个就是多机负载分担和统一认证功能。目前公司产品中多机负载有两种方式: 1. 纯resin,放弃了对HttpSession和本地资源的使用 2. apache + resin,需要传递所有需要用到的参数,因为麻烦所有干脆只有一个单一入口,因为使用了Ht ...
上文中详细描述了问题的表现情况,由于这个特性严重影响到目前为公司设计的一套前台统一认证方案,因此不得不特别关注。好在resin的源代码是公开的,直接从resin的官网将resin的源代码拿下来,看resin到底是如何处理的。
首先找到com.caucho.server.http.HttpRequest,发现是extends AbstractHttpRequest
在AbstractHttpRequest中找到方法
public HttpSession getSession(boolean create)
发现调用
_session = createSession(cr ...
近期因工作需求探索apache + resin的多机负载分布和多个webapp统一认证的实现方案, 期间设计多个webapp统一认证的实现方案时, 发现resin下通过cookie来传递jsessionid和通过url重写将jsessionid放url中传递, 会有细微的差异.
注:后来研究发现是resin提供的session id reuse特性,只是此文第一次发布时我还不知道有此特性,惭愧。
在servlet规范中,HttpServletSession的获取时通过调用request.getSession(boolean createnew)方法来实现,其实现机制可以简单的理解为 ...
看到有留言,对我如此“执着”的关注session创建很好奇,解释一下吧。
首先是关注性能,前面提到过session的使用是有代价的,需要在保存在服务器端内容中,每次request.getSeesion()方法获取 session时,实际是在服务器段的一个大的hasp结构中以当前的jsessionid为key,获取对应的value HttpSession对象,这个过程是需要消耗cpu的,当然目前hash算法比较好,这里消耗不那么明显。而一般的应用,消耗的cpu远比这个小开销大出2-3个数量级,因此通常情况不敏感。如果这个session是我们需要使用的,那么付出这些内存和cpu的代码是完 ...
按照前面的方法,将jsp页面加入<%@ page session="false"%>之后,发现还是有新的session会意外的蹦出来。仔细检查action没有操作session,那这次是谁干的呢?将目光转回jsp文件,首先来次狠的,将这个jsp文件的内容删空为只有纯html内容。重新运行后发现不会自动生成session,ok,问题在jsp文件里面了。将原来的内容一点点的加回去,反复测试直到session自动创建的问题再次出现, 哈,发现问题出现在webwork的标签上。
这次出问题的a.jsp代码内容为:
<%@ page contentType="text/html; ch ...
jsp文件是session创建的一个源头,这里指的不是在jsp文件中用代码或者标签来操作session,这些都是在控制中的。容易忽视或者说根本就不会意识到的(比如我,就是写jsp三年后才发现的)是,jsp有自动创建session的机制,在jsp页面中,如果没有明确的给出 <% @page session="false"%>,jsp页面会非常乖巧(如果刚好需要)或者说是偷偷摸摸(如果不需要)的自动在生成的java文件中增加一句: javax.servlet.http.HttpSession session = request.getSession(true)。
为了验证这个说法,我们做 ...
在HttpServlet中,HttpSession对象通常在request.getSession(true)方法调用时才创建。 HttpSession的使用是有代价的,需要占用服务器资源,本着能不浪费就不浪费的原则,我希望系统中的session都在掌握之中,在需要创建时由我们的代码明确创建。但是最近在开发中发现,新的session对象经常在意料之外出现,究竟是谁在创建session呢?
最常见的地方是错误的使用request.getSession()函数,通常在action中检查是否有某个变量/标记存放在session中。这个场景中可能出现没有session存在的情况,正常的判断应该 ...
发生在我身上的实际故事,最后发现和axis解析xml时的处理机制有关,namespace的有无会影响xml解析的方式,简单的说就是有namespace按照元素名解析,没有namespace则按照index下标的顺序来解析。
中间惊险,一一道来,做技术的不容易啊。
这个市公司的一个大项目,使用web service,我负责服务器端的开发,其他厂商开发客户端。好说,axis上,几个月下来,设计/开发/测试一路ok,就进移动研究院准备最后的入网测试了。
和我们一起联合测试的cx公司,报告说发现错误,经查找是服务器端解析他们发过来的请求失败,出现异常 java.lang.NumberFor ...
- 17:00
- 浏览 (2039)
- 评论 (5)
- 分类: web service
- 进入论坛
apache下安装mod_rewrite模块
在网上找了一些apache下安装mod_rewrite模块的文章,说得都很轻巧,但是俺一路碰壁,怎么都出不来。整理了一下,以后再来研究。
一. 编译rewrite模块
在apache 2.0.61下按照rewrite模块失败,目前还没有找到原因。
使用apache 2.2.6按照rewrite模块,采用的方式是在编译apache前,configure增加参数
./configure --prefix=/data/aoxj/artest/apache --enable-so --enable-rewrite=shared
然后再执行make ...
前段时间做公司前台方案的技术探索时,涉及到jsseionid的传递,期间尝试使用resin自己的url rewrite功能来传递jsessionid参数,总结如下:
一) 默认的jsessionid
默认配置中,jsessionid以cookie的方式在页面传递,即在http请求的header中有以下内容:
Cookie: JSESSIONID=abcrmF3Gx-5Z-hhkgHfzr
此时resin/conf/resin.conf中的配置为默认的:
<session-config>
<enable-url-rewriting>false</ena ...
前言:前段时间,对公司前台多机分布方案的做了一些探索,总结了一些东西,贴出来分享。类似内容网上比较多,但是都不够详细,我第一次弄时费力不少,希望后来人可以更方便一些。
一. 编译安装apache
1) 从apache官网上下载apache最新的 release版本2.2.6
unix版本取httpd-2.2.6.tar.gz
2) 解开包
gunzip httpd-2.2.6.tar.gz
tar xvf httpd-2.2.6.tar
3) 编译安装
进入解压后的目录httpd-2.2.6,依次执行
./configure --prefix=/*要安装apache的目录*/ --e ...
- 浏览: 38253 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
resin的session id reuse ...
-- by Oracle9.9 -
namespace对axis解析xml ...
这还算好呀,我们也是这样。。 cx公司很多的都是别的公司的外包人员在搞,水平参差 ...
-- by chump.lee -
namespace对axis解析xml ...
jameswxx 写道同情楼主,跟这些人共事。 不算共事吧,其实他们和我们公司 ...
-- by skydream -
namespace对axis解析xml ...
那个cx公司的开发人员真够.....,想不通一个webservice客户端有这么 ...
-- by jameswxx -
namespace对axis解析xml ...
呵呵,难得你把这么久的帖子顶出来。上面的故事,技术方面的东西没有什么,但是整个事 ...
-- by skydream






评论排行榜