这个Servlet是线程安全的吗?

情况:

言简意赅的描述下,程序框架是这样的 servelt -> service -> DAO -> Database

现在的问题就是不确定在多用户并发访问的情况下servlet是否是线程安全的?也就是说会不会出现用户得到的数据互相混乱的情况(这是相当糟糕的=_ =。。。)

大概的伪代码图如下:

User (POJO对象)
===============================
int userid
Stirng username
String password
// getter and setter method

UserDao ([……]

继续阅读

XStream小热身

XStream is a simple library to serialize objects to XML and back again.

XStream就是一个对象和XML之间的映射工具。

例1. Object > XML

public class Person {[......]<p class="read-more"><a href="http://neoremind.com/2010/09/xstream_warmu/">继续阅读</a></p>

sshxcute正式发布1.0版本

把sshxcute开源了,放在了Google Code上,第一个做的开源项目啊,不容易啊,里程碑式的一帖 ,纪念下吧。

English version guideline: http://code.google.com/p/sshxcute

中文使用指南:http://code.google.com/p/sshxcute/wiki/GuidelineOfChineseVersion

简介:

正如名字所示,SSHXCUTE是一个框架。它允许工程师利用Java代码通过SSH连接远程执行Linux/UNIX系统上的命令或者脚本,这种方式不管是针对软件测试还是系统部署,都简化了[……]

继续阅读

WAS profile重建失败的解决办法之一

问题描述:

重建一个新的WAS profile,我们先删除已经存在的。

#manageprofiles -deleteAll
 
#cd  ../profiles
 
#rm -rf AppSrv01
 
#cd ../bin
 
# /opt/IBM/WebSphere/A[......]<p class="read-more"><a href="http://neoremind.com/2010/09/cannot_recreate_was_profil/">继续阅读</a></p>

Session和Cookie的理解辨析与小试牛刀

Cookie机制采用的是在客户端保持状态的方案。cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力。

Session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的

session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量, 这个sessionID就是我们常说的JSESSIONID,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值[……]

继续阅读

HTMLParser HttpClient Firebug结合解析网页

题外话

已经很长时间没有写作了,原因颇多,世事变迁之快,迅雷不及掩耳,技术之路上仍需努力,闲话少说,开整。

背景

一直以来ITS Team都痛苦与build的下载工作,具体流程如下图所示。

1. 登录BuildVault网站。

2. 点击distribution进入二级页面。

3. 选择相应的产品下载。

4. 获取一个下载build的URL,要么下载到本地这么还得再传到server上dep[……]

继续阅读

拒绝labor 拥抱脚本~高效替换所有文件中字符串的Shell

使用场景: Linux或者Unix系统中,先查看下某个目录下所有文件列表:

tsadmin@tslnx10:~/com.ibm.rfidic.test.data/queries/set1.1/expected> ls
CVS
FVT_QG_EPCISCHG_0008_Expected_Response.xml
FVT_QG_EPCISCHG_0019_Expected_Response.xml
FVT_QG_EVENT_0001_Expected_Response.xml
FVT_QG_EVENT_0002_Expected_Response.xml
FVT_QG_E[......]<p class="read-more"><a href="http://neoremind.com/2010/08/replace_all_files_keyword_shell_script/">继续阅读</a></p>

卸载WAS

通常情况下,推荐使用WebSphere提供的卸载程序来卸载WebSphere,而不要使用操作系统的卸载软件的功能来卸载WebSphere,因为那样步骤比较复杂,并且有可能由于漏掉某些步骤而导致不能完全卸载干净。

卸载WebSphere之前,需要停止所有WebSphere相关的进程,最好查看系统中的进程确保没有java进程运行。

使用以下命令

/opt/IBM/WebSphere/AppServer/bin/stopServer.sh server1 -user wsadmin -password wsadmin_pwd

或者直接

ps -ef|grep serve[......]<p class="read-more"><a href="http://neoremind.com/2010/08/how_to_uninstall_was/">继续阅读</a></p>

设计模式学习总结-简单工厂方法模式

简单工厂模式是类的创建模式

假定有工厂,具体产品和抽象产品这三个元素存在,简单工厂模式就是由工厂类根据传入的参量决定创建出哪一种产品类的实例。简单工厂模式涉及到工厂角色抽象产品角色以及具体产品角色等三个角色:

工厂类(Creator)角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体Java类实现。
抽象产品(Product)角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。
具体产品(Concreate product)[……]

继续阅读

高可用性(HA)与集群(Cluster)之浅见

通俗来讲的HA应该属于狭义概念上的HA,它通常指代某种Active+Standby的Pair Service,最长见的当然就是数据库的主备结构。反正大家天天这么招呼,在狭义的HA层面上也能达成一定的共识,不过,HA概念本身其实简单背后蕴含着更多的玄机。

计算机系统的可用性(availability)是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:MTTF/(MTTF+MTTR)*100%

从更广义的角度来说, HA就[……]

继续阅读

JUnit使用经验总结

经验一、不要在测试用例的构造函数中做初始化,而是在setUp()中

经验二、不要假定测试用例中测试的执行次序

一个JUnit 的测试用例类中可以包含多个测试,每个测试其实就是一个method。在下面的例子中有两个不同的测试,尽管testDoThisFirst()在位置上先于testDoThisSecond(),但不能就此假定testDoThisFirst()会先执行。

public class SomeTestCase extends TestCase{
public SomeTestCase(String testName){
super(testName);
}
pu[......]<p class="read-more"><a href="http://neoremind.com/2010/07/junit_tip/">继续阅读</a></p>

RFT放慢脚本运行速度

执行RFT回归测试脚本的时候,如果担心鼠标刷刷刷点的太快,可以放慢脚步的运行速度,在你的脚本中加入以下全局声明,相当于在每个action后都sleep 2秒。

RationalTestScript.setOption(IOptionName.DELAY_BEFORE_GUI_ACTION, 2);

[……]

继续阅读

利用bat启动RFT脚本

@echo off
set jre_bin=&quot;C:Program FilesIBMSDP_RFTjdkjrebin&quot;
set ft_install_dir=&quot;C:Program FilesIBMSDP_RFTFunctionalTester[......]<p class="read-more"><a href="http://neoremind.com/2010/07/bat_launch_rft_test_scrip/">继续阅读</a></p>

Linux查看目录占用磁盘空间

组里遇到一个棘手的问题:某个Cognos虚拟机硬盘空间剩余0%,死活找不出什么可以删除的文件。df -h只能看整体大小,如果能找到相应目录下所有文件大小的信息就好了~

解决办法:

ls |xargs du -sh

输出:

35M     db2
35M     db2.tar
1.5G    ibm
9.9G    IBM
81M     IBMJava2-142

这样可以再cd到IBM目录看看什么东西可以删除。

提示:一般Java的应用程序在异常退出的时候都会生成core dump文件,其大小就等同于JVM所用内存大小,所以如果这些文件堆积起来的话总占用空间不可小视。[……]

继续阅读

设计模式学习总结-命令模式

1. 定义

把一个请求或者操作封装在命令对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

2. 要点

1) Command模式的根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。
2) 具体命令角色可以被不同的请求者角色重用。

3) 通过使用Compmosite模式,可以将多个命令封装为一个“复合命令”。

4) 增加新的具体命令角色很容易,因为这无需改变已有的类。

3. 适用性

1) 需要抽象出待执行的动作,然后以参数的形式提供出来——类似于过程设计中[……]

继续阅读