起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1731|回复: 19

[结贴] 关于模拟用户登录后,使用此session操作,提示超时问题

[复制链接]

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
发表于 2014-6-19 10:02:26 | 显示全部楼层 |阅读模式
就这边有操作需要登录对端服务器,然后在获取到此session后,执行操作时,有时候会提示session超时,对端服务器是由两台服务器集群的,
而在我们的测试库是没有出现session超时现象的。报错信息如下:

服务器连接超时, 切换到登录页面
        at socket.integration.X5Linker.sendRequestByGet(X5Linker.java122)
        at socket.integration.X5Linker.logout(X5Linker.java254)
        at dataTransfer.util.DataTransfer.linkOtherSystem(DataTransfer.java453)

        at DataTransferImpl.dataTransfer(DataTransferImpl.java360)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java25)
        at java.lang.reflect.Method.invoke(Method.java597)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown
Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Sour
ce)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java48
9)
        at java.lang.Thread.run(Thread.java662)


91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35949
发表于 2014-6-19 10:35:39 | 显示全部楼层
确认是具体怎么操作的时候会提示session超时
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
 楼主| 发表于 2014-6-19 10:44:45 | 显示全部楼层
jishuang 发表于 2014-6-19 10:35
确认是具体怎么操作的时候会提示session超时

有一个封装类
linker.executeAction(buSessionID, "/electronicMonitoring/eleMonitoring/process/eleMonitoring/eleMonitoringProcess",
                                        "mainActivity", "transmissionStartInOldSystemAction", null, new HashMap<String, Object>());
回复 支持 反对

使用道具 举报

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
 楼主| 发表于 2014-6-19 10:45:11 | 显示全部楼层
jishuang 发表于 2014-6-19 10:35
确认是具体怎么操作的时候会提示session超时

linker.logout(buSessionID);
这样也会
回复 支持 反对

使用道具 举报

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
 楼主| 发表于 2014-6-19 10:46:07 | 显示全部楼层
本帖最后由 a2862433 于 2014-6-19 10:47 编辑
jishuang 发表于 2014-6-19 10:35
确认是具体怎么操作的时候会提示session超时

登出的代码如下  
// 注销
        public void logout(String bSessionID) throws HttpException, JSONException, IOException {
                Map<String, String> params = new HashMap<String, String>();
                params.put("bsessionid", bSessionID);
                sendRequestByGet(getLogoutURL(), params);
        }

        // 注销请求
        private String getLogoutURL() {
                return address + "/demo/actions/process/integration/x5Logout.j";
        }


        // 以get方式发送请求
        private JSONObject sendRequestByGet(String url, Map<String, String> params) throws HttpException, JSONException, IOException {
                PostMethod method = new PostMethod(url);
                for (String key : params.keySet()) {
                        method.setParameter(key, params.get(key));
                }
                long length = method.getRequestEntity().getContentLength();
                method.setRequestHeader("Content-Length", length + "");
                try {
                        HttpClient httpClient = new HttpClient();
                        int status = httpClient.executeMethod(method);
                        if (status != HttpStatus.SC_OK) {
                                throw new RuntimeException(String.format("远程服务器%s调用失败! \n%s", address, method.getStatusLine()));
                        }
                        InputStream stream = method.getResponseBodyAsStream();
                        JSONObject result = new JSONObject(streamToString(stream));
                        if (!result.getBoolean("flag")) {
                                throw new RuntimeException(String.format("远程服务器%s调用成功,但返回错误! \n%s", address, result.getString("message")));
                        }
                        return result;
                } finally {
                        method.releaseConnection();
                }
        }
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-19 14:39:55 | 显示全部楼层
在集群环境下,http请求是发给代理服务器,由代理服务器再发给受管服务器。
在java中直接写的http’请求,也要访问代理服务器
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
 楼主| 发表于 2014-6-19 14:51:47 | 显示全部楼层
zhaixin 发表于 2014-6-19 14:39
在集群环境下,http请求是发给代理服务器,由代理服务器再发给受管服务器。
在java中直接写的http’请求, ...

不是很明白.....
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-19 15:59:33 | 显示全部楼层
在java代码中输出一下访问的端口号,看看是代理服务器的端口号,还是受管服务器的端口号
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

34

主题

173

帖子

371

积分

中级会员

Rank: 3Rank: 3

积分
371
QQ
 楼主| 发表于 2014-6-19 22:22:49 | 显示全部楼层
zhaixin 发表于 2014-6-19 15:59
在java代码中输出一下访问的端口号,看看是代理服务器的端口号,还是受管服务器的端口号 ...

端口号的话,默认都是80,地址有两个,一个0.166和一个0.171,访问的地址,代码里面写的都是171,但是由于集群,session也可能是从166过来的
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-6-20 10:58:53 | 显示全部楼层
171是代理服务器的IP吗
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-29 19:56 , Processed in 0.063266 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表