时下OpenSource风起云涌铺天盖地,笔者也是OpenSource的支持者之一;但这两天发现的
在weblogic下使用webwork2时的问题让笔者为OpenSource的发展捏了把汗.....
opensymphony是笔者比较喜欢的开源组织之一,从学习osworkflow开始就知道它旗下有诸
多短小精悍的软件,WebWork就是其中之一;WebWork现在已经是名声远播了,在国内的使用
率也非常高,但......
上周4,使用webwork2.1.jar,在weblogic Server 6.1,发现问题,paramsInterceptor不能
用!所有使用了paramsInterceptor的地方都报NullPointerException,从
com.opensymphony.xwork.interceptor.ParametersInterceptor报出来的....
查资料....问高手.....看源码.....没有发现问题.....
周5,在高手的指导下,换成了webwork2.1.7.jar,不报NullPointerException了,但取到的
所有parameter都前加"[" 后加"]",比如username="hongsoft",它取出来后变成了
username="[hongsoft]".....郁闷.....查资料....问高手.....看源码.....没有发现问
题.....
周6,呆在家也烦,因为问题没有找到,跑公司来,查资料....问高手.....看源码.....没有
发现问题.....发现webwork的faq中有介绍怎么在weblogic6.1下使用webwork的,试...
不行,再试...还是不行,看faq中还有介绍怎么在weblogic7.0下使用webwork的,不行明天
来换成7.0吧.....
周7,换7.0,试,不行,再试,还是不行;发现2.1.1.jar到2.1.5.jar问题一样;2.1.6.jar和
2.1.7.jar问题一样,换webwork.jar,换xwork.jar,换xwork-spring.jar,换....不行...
周8,没有办法,仔细看代码吧......问题解决,faq上的介绍全部是扯淡,怀疑他们没有试就
拿上来了.唉,opensource........
附:在weblogic下使用webwork2的解决办法
修改或者extend Webwork2的总控ServletDispatcher,并配置到web.xml中:
package com.hongsoft.agile;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.dispatcher.ServletDispatcher;
public class AgileFlowDispatcher extends ServletDispatcher{
/**
*覆盖ServletDispatcher中的方法
* @param request the HttpServletRequest object.
* @return a Map of all request parameters.
* @throws IOException if an exception occurs while retrieving the parameter map.
*/
protected Map getParameterMap(HttpServletRequest request) throws IOException {
Map map=new HashMap();
Enumeration e=request.getParameterNames();
while(e.hasMoreElements())
{
String key=(String)(e.nextElement());
map.put(key,request.getParameter(key));
}
return map;
}
}