如何解决程序中未释放数据库连接的问题
问题描述: 在某种情况下,由于代码不严格,数据库连接没有正常释放,导致数据库连接池达到最大值,出现请求失败的问题。 解决方案: 方案一:修改代码,正常释放数据库连接; 方案二:如果代码不能代码(如第三方的代码),可以在tomcat/conf/context.xml配置数据库连接时,添加以下三个属性: removeAbandoned="true" removeAbandonedTimeout="300" logAbandoned="true"
问题描述: 在某种情况下,由于代码不严格,数据库连接没有正常释放,导致数据库连接池达到最大值,出现请求失败的问题。 解决方案: 方案一:修改代码,正常释放数据库连接; 方案二:如果代码不能代码(如第三方的代码),可以在tomcat/conf/context.xml配置数据库连接时,添加以下三个属性: removeAbandoned="true" removeAbandonedTimeout="300" logAbandoned="true"
问题描述: 正常登录系统,不操作,过20分钟后,超时登录浏览器卡死问题(这时用别的浏览器打开时能正常登录) 环境:tomcat与数据库服务器不在同一个网段。 分析 出错的原因是,获取数据库连接时超时,默认需要等20分钟后才返回数据数据库连接超时错误,导致这个期间浏览器卡死。 解决方案 方案一:修改tomcat中数据库的连接参数 在tomcat/conf/context.xml文件中,为每个数据库连接添加以下参数 connectionProperties="SetBigStringTryClob=true; oracle.net.READ_TIMEOUT=5000;" validationQuery="select sysdate from dual" 其中: 如果jdbc的版本<10.1.0.5时, 使用oracle.net.READ_TIMEOUT=5000; 如果jdbc的版本>=10.1.0.5时,使用oracle.jdbc.ReadTimeout=5000; 其中的5000单位是秒,可以结合自己的实际需求调整大小。 方案二:调整网络 使得tomcat与数据库服务器在同一个网段内。
流程process组件有dialog属性,可以设置不同的功能使用不同的流转对话框,如果要实现具体某些功能的流转对话框有不同的控制,可以直接设置dialog属性,为自己添加了控制的流转对话框 扩展流转对话框简单的操作如下: 1.在UI2下自己的功能目录下创建一个processDialog目录,把/UI2/system/service/process/dialog/processDialog.w、/UI2/system/service/process/dialog/processDialog.js、/UI2/system/service/process/dialog/processDialog.m.w和/UI2/system/service/process/dialog/processDialog.m.js这四个文件拷贝到自己创建的目录下 2.修改拷贝的processDialog.js和processDialog.m.js文件中的var OrgKinds = require("./orgKinds");为:var OrgKinds = require("$UI/system/service/process/dialog/orgKinds"); 3.修改拷贝的processDialog.w文件中window组件的extends属性值,路径设置为拷贝到自己目录下的processDialog.m.w路径 然后就可以在拷贝的processDialog.w和对应的js文件进行自己的扩展,扩展后设置process组件上的dialog属性值为自己目录下的processDialog.w文件 注意可能有些组件或节点上没有xid,设计器上是不能修改的,如果要修改设置一下xid即可(processDialog.w是继承processDialog.m.w的,如果processDialog.w中xid为灰色不能设置的要在processDialog.m.w中设置xid) 例如:控制高级这个按钮在某些写情况下可用,定位到高级这个button按钮,设置xid,然后就可以通过bind-disabled控制是否可用 如果要在流转对话框中获取流程表单中的业务数据可以通过下面两种方案 说明: data的xid:业务表单中的.w中的bizData的xid XX:要获取的业务bizData中具体关系值的关系名 方案一:用this.getParent().comp("data的xid").getValue("XX")获取具体的关系的值 方案二:在process组件上可以自定义属性,属性名可以用bind-attr的格式开头,这样属性值就可以直接用$model.data的xid.val('XXX')设置 如bind-attr-value="$model.mainData.val('fName')",在流转对话框中获取值用$(this.getParent().getElementByXid("process")).attr("value"); process:.w中process组件的xid,value:自定义的属性名(只需要bind-attr-后面的即可)
下面自定义一个action:用来实现两个整数的和 UI层 1.界面操作:先创建一个.w文件,放置两个input和一个button,点击button用来发送请求: 代码: //获取intput值,发送请求 Model.prototype.button1Click = function(event) { var me = this; var aa = this.comp("input1").val(); var bb = this.comp("input2").val(); justep.Baas.sendRequest({ "url" : /action/action", "action" : "action", "async" : false, "params" : { [...]
以自定义一个action:用来实现求两个数的和 1.下载bex5版本并解压 2,打开stusio开发工具 3.在BIZ层新建一个应用(对biz进行右键点击新建应用(customAction))如下图所示: 4.在新建的应用(customAction)中右键选择新建业务模块(action),如下图所示 7.在logic中右键点击新建Action文件创建一个自定义action。如下图: 8.操作custom.action.m文件,点击添加可进行设置自定义action的名称,点击生成会生成procedure文件(自定义action的动作),点击代码会自定义一个类,然后可编写代码去实现自定义action的功能。如下图所示 9.在process中右键新建Process文件,如下图所示。 操作自定义的process文件(actionProcess.process.m),在动作设置中进行添加自定义action的动作。 UI层操作 1.右键BIZ层的process下的文件夹,然后选择切换到UI2,会在UI2下生成对应的目录。然后进行界面操作。如下图所示 界面操作:在目录下面右键选择需要的模版向导或是自己设置界面,切记:UI2下文件名字要和BIZ层中的process下的名字一致否则访问不到自定义action。如下图所示: mainActivity.w设计:如下图所示: js代码:(点击button按钮,获取intput中的值,然后发送请求) //要先引用biz: var biz = require("$UI/system/lib/biz"); //获取intput的值,发送请求 Model.prototype.button1Click = function(event) { var me = this; var a = this.comp("input1").val(); var b [...]
当登录或者模版中操作数据库时报在模块下获取数据库连接出错,Name XXX is not bound in this Context这样的错误 如下: com.justep.exception.BusinessException: 编码: JUSTEP150055; 提示: 在模块"/OA"下获取数据库连接出错 at com.justep.exception.BusinessException.create(Unknown Source) at com.justep.system.data.Transaction.getConnection(Unknown Source) at com.justep.system.data.Transaction.getConnection(Unknown Source) at com.justep.model.ModelUtils.getConnection(Unknown Source) ... 31 more Caused by: javax.naming.NameNotFoundException: Name oa [...]
报表分页打印要求最后一页报表数据不够一下空行填充可以用批注控制如下: 加批注auto-fill-row:true与record-per-page:12都设置在加select的那个单元格上 record-per-page是设置一页显示多少行数据,数据够不的时候用用空行填充 比如最后一页数据只有6条,分页设置的是12,那么打印的时候就会再后面加6条空行
这样操作下来baasServer就导入了
baasData设置条件过滤,首先先添加一个baasData组件,然后绑定表;当然后台你要先建好.m文件,添加表action 选取queryAction(这个不会可以去看看后端服务教程), 1.baasData刷新事件接管,baasData 属性autoload 设为fasle,这样他就不会一开始就去请求加载数据了; 现在就可以添加过滤条件了,baasData右键增加过滤条件,baasData下就有一个fiflter0,这个时候可以在model 的onload事件里写代码了 var data = this.comp("userData") var username = this.comp("nameInput").val(); var password = this.comp("passwordInput").val(); data.setFilter("filter0", "username='" + username + "' and password='" + password + "'") data.refreshData();//粗体就是数据库表的列名,斜体字是你要传的值,这个filter其实就是一个sql语句 这个时候就可以得到你想要过滤数据了, 2.baasData 属性autload不设为fasle [...]
每次都从浏览器中敲地址可能会比较麻烦,可以通过浏览设置把首页设置桌面快捷方式 默认设置的桌面快捷方式可能不太理想,可以通过下面的方式自己修改 1.设置标题在/UI2/system/components/justep/window/main.html中设置title 2.设置图标可以参考http://bbs.wex5.com/forum.php?mod=viewthread&tid=35462