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

QQ登录

只需一步,快速开始

查看: 4811|回复: 10

[处理中6] 关于后端数据库连接的问题

[复制链接]

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
发表于 2017-6-30 11:03:50 | 显示全部楼层 |阅读模式
在使用wex5 3.6版本开发手机app应用时,后端baas服务中的数据库连接需要自己手动关闭吗?
在我最近开发的app中,经过打包并部署到服务器上后,在手机端测试,发现用一段时间之后,非常卡,数据不能正在显示,前提是数据量很小,就是公司新闻信息,上百条数据量。

请起步公司技术人员帮忙分析一下原因,附件是我对数据库连接的分析。

我对baas服务的数据库连接的分析过程.rar

126.69 KB, 下载次数: 204

我对数据库连接的分析

发表于 2017-6-30 14:42:58 | 显示全部楼层
1. 服务器上是怎么部署的??  官方提供的服务器版本,还是自己的tomcat
http://docs.wex5.com/wex5-runtime-java/
确保不是直接使用的开发工具运行的!(不是调试模式启动tomcat)

2. 用chrome 浏览器,访问服务器页面!会卡吗??
看下网络请求,是什么原因导致卡的?那个网络请求比较耗时!找到原因所在!

数据库连接,connection对象是由tomcat线程池维护的!标准的queryAction,是不会有问题的!

最好看下服务器磁盘和内存占用情况是否正常?
你怀疑是baasServer 太消耗资源导致的吗??
有没有自己写java代码?默认的肯定没问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
 楼主| 发表于 2017-6-30 15:18:26 | 显示全部楼层
是自己的tomcat,是打包后,安装到会手机上运行的,
我想在想问的是,数据库操作完成后,是否需要自己手动关闭数据库连接?
回复 支持 反对

使用道具 举报

发表于 2017-6-30 17:14:43 | 显示全部楼层
sgf_2011 发表于 2017-6-30 15:18
是自己的tomcat,是打包后,安装到会手机上运行的,
我想在想问的是,数据库操作完成后,是否需要自己手动 ...

默认的baasServer   定义的action  是不需要的!
你没有自己写jdbc吧!就不用管!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
 楼主| 发表于 2017-7-4 09:04:00 | 显示全部楼层
数据库连接没有关闭的问题,我发现是什么原因了,这个可以处理。但是,现在又出现了其他的问题。

问题描述:就是当一个baas端的应用里同时处理两个或者两个以上的数据库业务,也就是同时连接两个数据库分别进行数据的查询或者提交数据,在业务都处理完成后,程序运行结束后,出现了如下的错误信息:
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
        at java.util.HashMap$KeyIterator.next(HashMap.java:1453)
        at com.justep.baas.action.ActionContext.closeConnection(ActionContext.java:93)
        at xtbg.tzgg.Tzggmanage__do.gettzggview(Tzggmanage__do.java:86)

通过网络查询,发现这个问题出现在
public  void closeConnection() throws SQLException {
                for (String key : connections.keySet()) {
                        System.out.println("key:"+key);
                        CoreConnection conn = connections.get(key);
                        conn.forcedClose();
                }
        }
问题出现在这个方法里,也就是在后台在集中关闭数据库连接时,在对hashmap进行操作时,出现了线程安全的操作,需要进行排它锁的执行,可是,当前贵公司的baas后台服务不能支持同时两个数据库的操作,这个问题该如何解决?

  请求帮助。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36127
发表于 2017-7-4 09:27:38 | 显示全部楼层
不用平台的API

action中自己用jdbc的方式获取数据库连接去操作看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
 楼主| 发表于 2017-7-4 09:34:55 | 显示全部楼层
不用平台的api获取连接是可以啊,但是也不能说用Connection conn = context.getConnection(xmbhString);获得的连接,结果context自己在关闭时,就出现问题啊,我觉得这是一个Bug,希望贵公司能给解决一下,谢谢!

或者说,这个问题,后台平台方面,没有办法解决吗?
回复 支持 反对

使用道具 举报

发表于 2017-7-4 09:55:19 | 显示全部楼层
sgf_2011 发表于 2017-7-4 09:34
不用平台的api获取连接是可以啊,但是也不能说用Connection conn = context.getConnection(xmbhString);获 ...

connection 对象,本来就不需要自己关闭的! tomcat 线程池自己维护的!

如果是同一个actionUrl 的批处理操作!
可以参考下
http://bbs.wex5.com/forum.php?mo ... 5&pid=165465446

就看你是一个链接还是多个链接!

另外请问你的WeX5 版本是多少??默认没出现这种情况的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
 楼主| 发表于 2017-7-4 10:27:13 | 显示全部楼层
tomcat线程池自己维护是没错,就是在平台自己关闭连接时。报错。
版本是3.6,在同一个应用中,同时调用两个不同的数据库
回复 支持 反对

使用道具 举报

33

主题

183

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
QQ
 楼主| 发表于 2017-7-4 10:30:19 | 显示全部楼层
你们提供的这个方法:http://bbs.wex5.com/forum.php?mo ... 5&pid=165465446,

根本解决不了问题,不是设置自动提交的问题,而是在平台关闭数据库连接的时候,平台自己报错了!

你可以测试一下用平台context获取两个不同的数据库连接时,在应用的逻辑执行完毕后,看平台的代码有没有报错?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 12:04 , Processed in 0.150028 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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