时下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; }}