HTTP Status-Code=500 (Internal Server Error)
用loadrunner 录制脚本回放的时候报错: 然后在后台taocat 和用badboy录制在回放了一下,都是同样的错误: 代码里相应的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 16:09 编辑
.... 本帖最后由 dian106106 于 2013-3-21 16:09 编辑
.... 本帖最后由 dian106106 于 2013-3-21 16:10 编辑
..... 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;'> </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"));
})
})
} 帮顶下~ 真心谢谢. 版主帮忙看看几眼吧:lol 自己的想法: 因为在这个重复预订之前 有个ajaxPolicyControl.action, 这个是异步加载的. 我猜想是不是请求顺序问题导致的. 但是tomcat 后台 没有报错,难道tomcat 没有检测到, loadrunner 可以检测?? 忘了贴前台的东西: 就是预订按钮 然后 弹出那个alert: 截图 你确定你提交的数据 没有问题?建议先检查下 服务down了 @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.后来就改成这样了. 在老的基础上 加了
logger.error("====================is ajax!!" + invocation.getAction().getClass());
logger.error("====================not ajax!!" + invocation.getAction().getClass()); 前天有一个这个错 开发说有个页面没编译成功 回复 15# dian106106
我录制带有js的页面,,,也出现这个错误 搞定了。一直忙,没有及时回帖。
由于是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"); 搞定了。一直忙 没有结贴
由于是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