dian106106 发表于 2013-3-21 15:51:11

HTTP Status-Code=500 (Internal Server Error)

用loadrunner 录制脚本回放的时候报错:

dian106106 发表于 2013-3-21 15:53:46

然后在后台taocat 和用badboy录制在回放了一下,都是同样的错误:

dian106106 发表于 2013-3-21 15:56:58

代码里相应的code:
/**
       * 校验是否重复预订
       * @return
       * @throws Exception
       */
        public String checkDoubleBooking()throws Exception{
                List doubleBookingList=this.travellerFlightCardService.doubleBookingResultForNewUI(bookDomesticAirVO);
                JSONArray jo=JSONArray.fromObject(doubleBookingList);
                this.result=jo.toString();
                return "Success";

        }

xml里:
<package name="doubleBooking" namespace="/doubleBooking" extends="project-json">
                <action name="checkDoubleBooking" class="com.citsamex.action.common.BookingAction" method="checkDoubleBooking">
                        <result type="json" name="Success">
                                <param name="root">result</param>
                        </result>
                </action>
        </package>

dian106106 发表于 2013-3-21 15:58:37

本帖最后由 dian106106 于 2013-3-21 16:09 编辑

....

dian106106 发表于 2013-3-21 15:59:37

本帖最后由 dian106106 于 2013-3-21 16:09 编辑

....

dian106106 发表于 2013-3-21 16:06:47

本帖最后由 dian106106 于 2013-3-21 16:10 编辑

.....

dian106106 发表于 2013-3-21 16:06:56

google baidu里很多的"解决方法" 都试了. 没凑效. 整了4天了.郁闷啊. 请高人指点! 需要相关code,小弟迅速贴.
这个是js里 的那个重复预订的方法:
function checkDoubleBooking($tr){
        var url=VAR_APPLICATION_PATH+"/doubleBooking/checkDoubleBooking.action";
        var param="";
        $(".travellerIds").each(function(index){
                param=param+"&bookDomesticAirVO.travellerIds="+$("input:eq("+index+")").val();
        })
        $("input").each(function(){
                param=param+"&"+$(this).attr("name")+"="+$(this).val();
        })
        param=param+"&bookDomesticAirVO.domesticAirlineAvsegOrgcitys="+$tr.attr("domesticAirlineAvsegOrgcity")+
                "&bookDomesticAirVO.domesticAirlineAvsegDstcitys="+$tr.attr("domesticAirlineAvsegDstcity")+
                "&bookDomesticAirVO.domesticAirlineAvsegDepdates="+$tr.attr("domesticAirlineAvsegDepdate")+"&date="+new Date();
        param=param.substring(1,param.length);
        $(".member").remove();
        $.post(url,param,function(data){
                var json=eval("("+data+")");
                $(".travellerIds").each(function(index){
                        var travellerId=$("input:eq("+index+")").val();
                        var trs=$(this).parent().parent();
                        var nextTr=trs.next("tr");
                        var doubleFlag=false;
                        for(var i=0;i<json.length;i++){
                                if(travellerId==json.ttTravellerID ){
                                        doubleFlag=true;
                                        $(this).removeAttr("checked");
                                        break;
                                }
                        }
                        var certErrors=nextTr.find(".certErrors");
                        if(certErrors.length==0){
                                if(doubleFlag) {
                                        if(!nextTr.hasClass("doubleBookingErrors")){
                                                var travellerNameCN=$(this).parent().text();
                                                var travellerNameEN=$(this).parent().next("td").text();
                                                var doubleTr="<tr class='doubleBookingErrors'><td height='28' style=' padding:0;'>&nbsp;</td>"+
                                          "<td colspan='4'><span class='hred'>"+VAR_DOUBLE_NOTE+"</span> <span class='zshe'>"+travellerNameCN+"("+travellerNameEN+")"+VAR_DOUBLE_DESCRIBE+json.doubleOrderNo+"</span> </td></tr>";
                                                trs.after(doubleTr);
                                                $(this).attr("disabled","disabled");
                                        }
                                }else{
                                        if(nextTr.hasClass("doubleBookingErrors")){
                                                nextTr.remove();
                                        }
                                        $(this).removeAttr("disabled");
                                }
                        }
                        if($(".travellerIds").length==1 && $(".doubleBookingErrors").length>0){
                                $(".btn").hide();
                        }else{       
                                $(".sut").find("a").unbind("click");
                                $(".sut").find("a").bind("click",{msg:VAR_SELECT_TRAVELLER,tr:$tr},commitToBooking);
                                showButtonPosition($(".Check"),$(".sut"),$(".sut-x"));
                        }
                        showFlightSegments($tr);
                        showPostion($(".Check"));
                })
        })
}

lsekfe 发表于 2013-3-21 16:08:49

帮顶下~

dian106106 发表于 2013-3-21 16:28:46

真心谢谢. 版主帮忙看看几眼吧:lol

dian106106 发表于 2013-3-21 16:36:52

自己的想法:   因为在这个重复预订之前 有个ajaxPolicyControl.action, 这个是异步加载的. 我猜想是不是请求顺序问题导致的. 但是tomcat 后台 没有报错,难道tomcat 没有检测到, loadrunner 可以检测??

dian106106 发表于 2013-3-21 16:53:30

忘了贴前台的东西: 就是预订按钮 然后 弹出那个alert:

dian106106 发表于 2013-3-21 16:55:59

截图

edisonzhang 发表于 2013-3-22 15:32:23

你确定你提交的数据 没有问题?建议先检查下

joykao 发表于 2013-3-22 16:27:36

服务down了

dian106106 发表于 2013-3-25 10:22:02

@13#
找了dev 看了下.   说是那个页面有ajax的东西,采用http/html 录制方式, loadrunner 在录制的时候没有抓到ajax的. 所以在回放的时候,就报错.

然后改了下代码:确实不报500了,但是是治标不治本的那种.只是不报500,还是没有ajax的东西.
private void afterInvoke(ActionInvocation invocation, LoggerEntity logEntity, Map session, Date startDate) {
                ActionContext context = invocation.getInvocationContext();
                HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);

                String header = request.getHeader("X-Requested-With");
                if (header != null && "XMLHttpRequest".equals(header)) {
                        logEntity.setActionFrom("ajax");
                        logger.error("====================is ajax!!" + invocation.getAction().getClass());
                } else {
                        logger.error("====================not ajax!!" + invocation.getAction().getClass());
                        if (invocation.getAction() instanceof BaseAction) {
                                BaseAction action = (BaseAction) invocation.getAction();
                                String actionFrom = action.getReturnUrl();
                                logEntity.setActionFrom(actionFrom);
                        }
                }

还说一点, 老的程序有验header信息, 由于在回放的时候没有header的内容,所有开始的时候就报500.后来就改成这样了.

dian106106 发表于 2013-3-25 10:23:04

在老的基础上 加了
logger.error("====================is ajax!!" + invocation.getAction().getClass());

logger.error("====================not ajax!!" + invocation.getAction().getClass());

赵佳乐SMILE 发表于 2013-3-27 11:33:14

前天有一个这个错 开发说有个页面没编译成功

temp20121017 发表于 2013-3-27 12:02:14

回复 15# dian106106


    我录制带有js的页面,,,也出现这个错误

dian106106 发表于 2013-4-4 20:33:50

搞定了。一直忙,没有及时回帖。
由于是ajax的, 没有头信息。在请求之前加一些类似这样的头就可以了。
        web_add_header("(Request-Line)","POST /onlineHEAD/ajaxCheckCompanyLoginMode.action HTTP/1.1");
        web_add_header("Accept","application/json, text/javascript, */*; q=0.01");
        web_add_header("Content-Type","application/x-www-form-urlencoded");
        web_add_header("is-ajax","true");
        web_add_header("X-Requested-With","XMLHttpRequest");

dian106106 发表于 2013-4-4 20:43:15

搞定了。一直忙 没有结贴
由于是ajax的 , 加上头信息就可以了
类似这样的header:
web_add_header("is-ajax","true");
web_add_header("X-Requested-With","XMLHttpRequest");
web_add_header("Referer","http://10.181.57.212:4080/onlineHEAD/citsamexOnlineSystemLoading.action?currTime=1364262556230&companyid=publish");
web_add_header("Accept-Language","zh-cn");
web_add_header("Accept-Encoding","gzip, deflate");
页: [1] 2
查看完整版本: HTTP Status-Code=500 (Internal Server Error)