版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
普元啟動(dòng)服務(wù)失敗的解決方法當(dāng)多個(gè)人同時(shí)使用一個(gè)數(shù)據(jù)庫(kù)的時(shí)候,啟動(dòng)普元控制臺(tái)會(huì)一直停留在rcall,然后顯示一個(gè)超時(shí)的警告,那樣就需要修改一下普元的一個(gè)定時(shí)器配置項(xiàng)。安裝目錄下\Primeton\Platform\apps_config\default\config中的一個(gè)user-config.xml文件將下列代碼中高亮字段中的true改為false即可<modulename="Schedule"><groupname="Default"><!--IsSchedulerStart[optional,defaultto"true"],whethertostarttimerwhenapplicationstartsup--><configValuekey="IsSchedulerStart">true</configValue><!--DataSouceName[optional,defaultto"default"],datasoucename(mustbethesameasDataSource'sGroupname)-><!--configValuekey="DataSouceName">default</configValue--></group></module>當(dāng)EOS啟動(dòng)調(diào)試服務(wù)時(shí),控制臺(tái)停留在RCALL后無(wú)反應(yīng)一般是因?yàn)槎〞r(shí)任務(wù)的表被鎖住的原因,可在plsqldeveloper中執(zhí)行以下語(yǔ)句:select'altersystemkillsession'"||b.SESSION_ID||','||c.SERIAL#||"'immediate;'fromv$locked_objectb,v$sessioncwhereb.SESSION_ID=c.SID將查詢(xún)結(jié)果復(fù)制到新的SQL窗口執(zhí)行,執(zhí)行完成后再啟動(dòng)服務(wù)--解決EOS連接失敗無(wú)法啟動(dòng)的問(wèn)題--查看有沒(méi)有被鎖的對(duì)象select*fromv$locked_object--查看被鎖的對(duì)象是哪張表select*fromdba_objectswhereobject_idin(selectt.OBJECT_IDfromv$locked_objectt)--select*fromdba_objectswhereobject_id=73713--從菜單欄進(jìn)入Tools/Sessions,將Status='ACTIVE'andSid=被鎖對(duì)象id的記錄,點(diǎn)擊右鍵菜單中的Kill神奇的EOSSTUDIO界面問(wèn)題如下圖,紅色方框內(nèi)應(yīng)該是可選或者可填的控件,但是現(xiàn)在不顯元,我是Primeton_PIatform_6.S-Developer,操作系統(tǒng)WIM764位,請(qǐng)問(wèn)如何解決?耐件■abc.jpg(54.^2K&)2013-1-3001:05TOC\o"1-5"\h\z卜5?皿—U=—F字礎(chǔ)醐0江樸怦醐葡叫擊取iSfi曲虹w待:'&*■>白ew問(wèn)村rl中■3眼用心直叵增ointoSSiringiniiciTOC\o"1-5"\h\z僉*瞄跟操作系統(tǒng)的兼容性有關(guān),建議去下看ide\eclipse\plugins目錄下org.eclipse.swt.win32.win32.x86_3.2.0.和org.eclipse.swt_3.2.0兩個(gè)jar的版本,更換成高版本試試。-n■::FcZrJMSO.15:dV47!i.Z-!-R?一mi.!W曲fH『T怕-三dnEJiEOSC-z*-rdfI-tHa-?'HTtKi-?:;z-M'.-nr.■ji-e3-.inin-1n?T!?*it11■ja:l十/ctml■■■■.i■在.^4a;'^lse^iss常若E共碗畏IM?直M虹巨Ttwti!盤(pán)JL.標(biāo)WS&也SMB二洋?牲不鰥t!?明$QLi!句,?lKI心*詰拳ZU蘑丁土玖忖隊(duì)心日主用*-*-*不金次吃名皿?熾加下EIbtakjEi#堿:使用U&W提供清理eos開(kāi)發(fā)過(guò)程中緩存清理的方法摘要:提供清理eos開(kāi)發(fā)過(guò)程中緩存清理的方法。在eos開(kāi)發(fā)過(guò)程中,經(jīng)常遇到新開(kāi)發(fā)的代碼無(wú)法使用,右鍵部署之后依然使用原來(lái)的老舊代碼,非常影響開(kāi)發(fā)速度。這里提供下清理緩存的方式,確定我們的最新代碼能夠被使用。對(duì)于分組開(kāi)發(fā)過(guò)程中,各人代碼版本差異無(wú)法實(shí)現(xiàn)同樣的運(yùn)行效果有特效。刪除%EOS_HOME%\apps_config\default\work_temp下的所有文件和文件夾。如需使用平臺(tái)的各種日志請(qǐng)酌情備份logs下的內(nèi)容。刪除%EOS_HOME%\apache-tomcat-7.0.54\work下的所有內(nèi)容,情況tomcat的緩存。刪除%EOS_HOME%\apache-tomcat-7.0.54\webapps\default\WEB-INF\_srv\work\user下我們自己項(xiàng)目的內(nèi)容。慎重,別刪錯(cuò)了,我們自己開(kāi)發(fā)的。ESB修改默認(rèn)端口61616windows操作系統(tǒng)下的默認(rèn)的ICS服務(wù)(InternetConnectionSharing)默認(rèn)占用了61616端口,因此要解決jms端口沖突的情況有兩種方式。方式一:停止ICS服務(wù)。命令行執(zhí)行“services.ms找到ICS服務(wù),右鍵停止,并設(shè)置為以后手動(dòng)啟動(dòng)。方式二:修改ESB下JMS默認(rèn)端口。找到D:\Primeton\ESB\studio\server\EOS\_srv\config下的esb-mq-config.xml和fts-server-config.xml文件,分別修改如下內(nèi)容:(esb-mq-config.xml)<transportConnectors><transportConnectorname="openwire"uri="tcp://:61616"/></transportConnectors>(fts-server-config.xml)<mqconfig><url>tcp://:61616</url><reConnectTime>5</reConnectTime><heartbeat_interval>1</heartbeat_interval></mqconfig>如何修改Platform發(fā)布Webservice服務(wù)的命名空間摘要:如何修改Platform發(fā)布Webservice服務(wù)的命名空間()為自己指定的名字。問(wèn)題描述:Platform發(fā)布Webservice服務(wù),在瀏覽器上查看wsdl,客戶(hù)想修改其中的命名空間,如下圖紅色框的內(nèi)容,想更換成自己的命名空間。version^l.O"encoding-'LlTF-8"?>-<wsdl:definitionsname-'TestserviceService"targetNaniespace="http://www.primeton_comjTxrrilns:nn5-'http:/T肉rvice"xrriln5:soap="http://schemas.>mlso□-<wsdktypes>-<^sd:schemaattributeFormDefault^'qualified"elenientForn-iDefault^1qualified"targetNamegpaxmlns:xsd-/2001/XMLSchema">-<x.sd;elementname-'te5tl">-<xsd:corTiplexType>適用環(huán)境:PlatformV6及以上版本處理經(jīng)驗(yàn):可以修改user-config.xml中的配置,將DefultNameSpace這行的注釋放開(kāi),修改為自己指定的值。<modulename=〃WebService〃><groupname=〃WSDL〃><!--<configValuekey="DefultNameSpace">/</configValue>--></group></module>應(yīng)用被攔截,調(diào)用報(bào)錯(cuò)無(wú)法訪(fǎng)問(wèn)摘要:應(yīng)用被攔截,調(diào)用報(bào)錯(cuò)無(wú)法訪(fǎng)問(wèn)場(chǎng)景描述:test.html放在Tomcat的webapps/ROOT目錄下,或者其他非default應(yīng)用下該靜態(tài)HTML頁(yè)面中有一個(gè)超鏈接<ahref=":8080/default/〃target=〃_blank〃>EOStest</a>在資源管理器中直接雙擊該文件,在瀏覽器打開(kāi)后(file:///協(xié)議),點(diǎn)擊該超鏈接可以正常訪(fǎng)問(wèn)。但如果我通過(guò):8080/test.html訪(fǎng)問(wèn)該頁(yè)面(http://協(xié)議),點(diǎn)擊該超鏈接時(shí),直接報(bào)錯(cuò)了,錯(cuò)誤信息為:調(diào)用異常,請(qǐng)查看日志!而使用window.open沒(méi)有問(wèn)題。<ahref=〃#〃onclick=〃open_win();〃>EOStest</a>,<scripttype=〃text/javascript〃>functionopen_win(){window.open(〃:8080/default/skins/default/index.jsp")}</script>情況分析:獲取前后http頭,referer為不同應(yīng)用之間的請(qǐng)求,那么可能被default給攔截了。解決辦法:去除攔截器:把a(bǔ)pps_config\default\config\eos\handler-web.xml中的以下配置注釋掉,看看是否還會(huì)不會(huì)有問(wèn)題:<handlerid=〃HttpRefererWebInterceptor〃sortIdx=〃3〃pattern=〃/*〃class=〃com.eos.access.http.security.HttpRefererWebInterceptor〃/>摘要:EOS工程部署到JBOSS后報(bào)錯(cuò)。分析日后初步確定為"\jboss-6.1.0.Final\common\lib\slf4j-api.jar"與"\jboss-6.1.0.Final\server\default\deploy\default.ear\default.war\WEB-INF\lib\slf4j-api-1.5.6.jar”沖突導(dǎo)致該問(wèn)題已經(jīng)解決。方案如下:修改jboss\server\default\deployers\jbossweb.deployer\META-INF\war-deployers-jboss-beans.xml添加org.slf4j,以過(guò)濾該包代碼如下:<!--Allowforwarlocalclassloaders:intesting--><beanname="WarClassLoaderDeployer"class="org.jboss.web.tomcat.service.deployers.WarClassLoaderDeployer"><propertyname="relativeOrder">-1</property><propertyname="filteredPackages">javax.servlet,mons.logging,org.slf4j</property></bean>然后重啟JBOSS服務(wù)器。原因分析:jboss加載jar包順序問(wèn)題。摘要:在最近修改SSO應(yīng)用的時(shí)候,涉及到需要在jar包中讀取工程配置文件的問(wèn)題。在jar包中,讀取配置文件,需要單獨(dú)處理。項(xiàng)目中的一些配置文件,如pertieslog4j.xml不想打包進(jìn)jar。因?yàn)榭赡軙?huì)修改其中的一些配置信息,打包進(jìn)jar,就變得比較笨拙,不方便修改文件??梢杂萌缦路绞剑瑢?shí)現(xiàn)在jar包中讀取外部配置文件。方法一:關(guān)鍵代碼。讀取properties文件方法:Inputstreamins=getClass().getResourceAsStream("/resource/perties");但是log4j.xml又需要單獨(dú)處理:PropertyConfigurator.configure(System.getProperty("user.dir")+"/resource/log4j.xml");方法二:配置文件perties和jiar包在同一個(gè)目錄下面:FileInputStreaminputStream1=newFileInputStream("perties");配置文件perties在jar包內(nèi)部:InputStreaminputStream2=a.class.getResourceAsStream("/perties");org.apache.axis2.AxisFault:WSDoAllReceiver:摘要:使用EOS7.2自動(dòng)生成的客戶(hù)端代碼,在調(diào)用帶有安全頭部消息的webservice接口的時(shí)候,會(huì)經(jīng)常出現(xiàn)org.apache.axis2.AxisFault:WSDoAllReceiver:IncomingmessagedoesnotcontainrequiredSecurityheader的異常,可以照下文處理使用EOS7.2自動(dòng)生成的客戶(hù)端代碼,在調(diào)用帶有安全頭部消息的webservice接口的時(shí)候,會(huì)經(jīng)常出現(xiàn)org.apache.axis2.AxisFault:WSDoAllReceiver:IncomingmessagedoesnotcontainrequiredSecurityheader的異常,表示傳入的消息不包含所需的安全報(bào)頭,經(jīng)過(guò)分析發(fā)現(xiàn)是該方法在第一次被調(diào)用后,已經(jīng)生成了一些安全校驗(yàn)數(shù)據(jù),ListenerManager.defaultConfigurationContext不為空,無(wú)法對(duì)新的請(qǐng)求進(jìn)行安全數(shù)據(jù)的封裝,導(dǎo)致請(qǐng)求失敗,應(yīng)該清空ListenerManager.defaultConfigurationContext應(yīng)用環(huán)境,重新生成對(duì)應(yīng)的安全校驗(yàn)數(shù)據(jù)??梢哉杖缦路绞竭M(jìn)行處理。在使用客戶(hù)端代碼的方法中,加入ListenerManager.defaultConfigurationContext=null;用于清空運(yùn)行環(huán)境,以對(duì)新的請(qǐng)求,作出新的安全設(shè)置。示例代碼片段:@BizletpublicMapsellOrderPriceUpdate(SellOrderImplsellOrderImpl,SellOrderDetailImpl[]sellOrderDetailImpls)throwsException{ListenerManager.defaultConfigurationContext=null;〃重置axis2部分運(yùn)行參數(shù)環(huán)境,用于新的請(qǐng)求ZCOP_SERVICEStub.ZifSoChangein=newZCOP_SERVICEStub.ZifSoChange();〃輸入ZifSoChangeResponseresponse=newZCOP_SERVICEStub.ZifSoChangeResponse();/輸出EOS在業(yè)務(wù)程序中獲取邏輯構(gòu)件執(zhí)行的SQL語(yǔ)句文章>huangxu@>文章詳情EOS在業(yè)務(wù)程序中獲取邏輯構(gòu)件執(zhí)行的SQL語(yǔ)句huangxu@發(fā)表于3個(gè)月前來(lái)自話(huà)題#應(yīng)用開(kāi)發(fā)平臺(tái)(EOSPlatform)#-摘要:更改log4j的日志配置,使用類(lèi)繼承方式,方法重寫(xiě),在程序中獲取邏輯流執(zhí)行SQL。配置文件:應(yīng)用配置目錄/log4j-sys.xml(可根據(jù)實(shí)際情況使用更改具體配置文件);更改log4j的日志配置,使用類(lèi)繼承方式,方法重寫(xiě),在程序中獲取邏輯流執(zhí)行SQL。配置文件:應(yīng)用配置目錄/log4j-sys.xml(可根據(jù)實(shí)際情況使用更改具體配置文件);配置文件說(shuō)明:config/log4j-deploy.xml部署日志記錄系統(tǒng)啟動(dòng)、停止、構(gòu)件包部署、集群通知等信息的日志。config/log4j-trace.xml跟蹤日志Server引擎的調(diào)試日志,用于系統(tǒng)維護(hù)人員定位系統(tǒng)運(yùn)行問(wèn)題使用。config/log4j-sys.xml系統(tǒng)日志大粒度的引擎運(yùn)行的入口、出口的日志,用于調(diào)用棧分析,可以進(jìn)行性能分析使用config/log4j-engine.xml引擎日志細(xì)粒度的引擎運(yùn)行日志,可以打印上下文數(shù)據(jù),用于定位業(yè)務(wù)問(wèn)題。記錄時(shí)機(jī):頁(yè)面流(P)執(zhí)行、邏輯流(B)執(zhí)行、服務(wù)(S)執(zhí)行、Web服務(wù)(W)調(diào)用、定時(shí)任務(wù)(D)執(zhí)行、JSP(J)執(zhí)行、SQL(Q)執(zhí)行(超過(guò)時(shí)限者記錄)、運(yùn)算邏輯(X)執(zhí)行(超過(guò)時(shí)限者記錄);記錄格式:有固定格式[記錄時(shí)間][請(qǐng)求編號(hào)][P|B|S|W|D|J|Q|X(類(lèi)型)][Begin|End|Exception|Run][全名][執(zhí)行時(shí)長(zhǎng)][父全名][IP地址][登錄用戶(hù)ID][登錄用戶(hù)名][當(dāng)前內(nèi)存總量][當(dāng)前空閑內(nèi)存量][自定義信息]。配置文件log4j-sys.xml,找到log.sys.sql開(kāi)關(guān),<levelvalue="off"/>
off更改為all找到RollingFileAppender新建新類(lèi)LimsLogOut繼承RollingFileAppender,重寫(xiě)doAppend方法,方法參數(shù)LoggingEvent內(nèi)有屬性可區(qū)分SQL。截圖實(shí)例如下:versz-O^=prl.0pre^codi_^c=rrUTF-5rrdebuc=rrrLJll2<log4j:conUgjiatiorLxmlns:log4j=rrnttp://jakaita.apacne.oig/log4j/"J1112131415oppendercLa33=Frcom.sgai.2ims.LimsLogD'Jt,rname=rrROLLZNG_FZLEr><paramr.anE=rrT?iTEB?ioldprvaL'je=prALLrr/><param^aine=riEncoding^vaLj.e=nUTF-5rr><param^aine=riMaxLevelrrvaLj.e=nOFFFr/><paranir;ane=RrFi2eRrva2.j.e=n'2ogs/system.2og,r/><param^ane=prAppendprvaLse=rrtraerr/><param二ame=p,M己kFH已5工工已"v己Lj.e=rr10ME,r/><param二ane=p,MaxBscJcapIndexp,vaLj.e=p,10,r/><layojtcla3B=rrorg.apache.Iog4j.PatteinLayoatn><paramnane=nrCorLV£TBiorLpatt£TrLdebuc=rrrLJllJ1112131415</layont></appender><1nnnpTArid■r.■v;r.■.p=rrf1,^£=r,^flin£==l'rlnn.1nw">AIo-g4j-deploy.Kml兇Icigq-SYwriil兇Iog4j-trace.xmlAu5er-local-config.xim:LLcginUtilja^1packagecam.gal.liius;5-importoig.apacjie.Iog4j.RollingFileApi:en.cler;4importoig.apache.Iog4j.spi.LoggingEvent;后pnl>licclassLlir.sLogOjt€工*!1<15RollingFileippen.d.er-[7'-1^CveiiidepublicsynctironisediroiddoAppend[log'girLg'EverLtevent)■[105ysten.-sut.pTintlnfe-'zent.getMessage().toStrin.g()4-'r-11sniper.doAppend(event);?|U:?15由于該類(lèi)記錄SQL日志為超過(guò)時(shí)限者記錄,時(shí)限默認(rèn)設(shè)置為1000毫秒,很多sql執(zhí)行時(shí)間可能不需要1000毫秒,需進(jìn)行更改,
找到sys-config.xml配置文件,將屬性L(fǎng)ogSqlWhenTimeout設(shè)置為1。部署配置文件,在新建類(lèi)LIMSLogOut中可以處理SQL日志。多個(gè)EOS連接同一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)定時(shí)器表鎖定的問(wèn)題解決方案文章>bigdabao>文章詳情多個(gè)EOS連接同一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)定時(shí)器表鎖定的問(wèn)題解決方案bigdabao發(fā)表于4個(gè)月前來(lái)自話(huà)題#應(yīng)用開(kāi)發(fā)平臺(tái)(EOSPlatform)#摘要:多個(gè)EOS連接同一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)定時(shí)器表鎖定的問(wèn)題解決方案問(wèn)題描述:如果多個(gè)EOS連接同一個(gè)數(shù)據(jù)庫(kù),在server啟動(dòng)的時(shí)候,會(huì)出現(xiàn)EOS_QRTZ_LOCKS鎖表的情況,導(dǎo)致Server啟動(dòng)不成功解決方案:多個(gè)環(huán)境連通過(guò)庫(kù),容易出現(xiàn)定時(shí)器鎖表的問(wèn)題,因?yàn)槎〞r(shí)器默認(rèn)情況下是啟動(dòng),可嘗試如下操作:<modulename="Schedule"><groupname="Default"><!--IsSchedulerStart[optional,defaultto"true"],whethertostarttimerwhenapplicationstartsup--><configValuekey="IsSchedulerStart">true</configValue><!--DataSouceName[optional,defaultto"default"],datasoucename(mustbethesameasDataSource'sGroupname)--><!--configValuekey="DataSouceName">default</configValue--></group></module>#顏色標(biāo)記的true改為false(連同一個(gè)庫(kù)的每個(gè)環(huán)境都需要改)用戶(hù)session失效,ajax調(diào)用不能跳轉(zhuǎn)的解決方案文章>liucl>文章詳情用戶(hù)session失效,ajax調(diào)用不能跳轉(zhuǎn)的解決方案(PrimetonEOS)liucl發(fā)表于9個(gè)月前來(lái)自話(huà)題#應(yīng)用開(kāi)發(fā)平臺(tái)(EOSPlatform)#
摘要:在某客戶(hù)項(xiàng)目支持過(guò)程中發(fā)現(xiàn)session失效后,ajax還能繼續(xù)調(diào)用,原因是在攔截器雖然能攔截到ajax調(diào)用,也做了跳轉(zhuǎn)到index.jsp的操作,但由于是ajax調(diào)用,在index.jsp中并不能完成跳轉(zhuǎn),頁(yè)面沒(méi)有任何變化,所以不能正常跳轉(zhuǎn)到登錄頁(yè)面,在abframe或其它項(xiàng)目可能也存在這種問(wèn)題。場(chǎng)景一個(gè)基于Ajax技術(shù)的Web應(yīng)用,采用的是多頁(yè)面方式,每個(gè)頁(yè)面內(nèi)部使用Ajax實(shí)現(xiàn)復(fù)雜業(yè)務(wù)邏輯之間的無(wú)刷新切換,使用了Struts來(lái)實(shí)現(xiàn)MVC。問(wèn)題對(duì)于Ajax請(qǐng)求,只有在通過(guò)用戶(hù)驗(yàn)證無(wú)誤之后才能對(duì)請(qǐng)求作出響應(yīng)。如果用戶(hù)長(zhǎng)時(shí)間不做操作導(dǎo)致Session過(guò)時(shí)之后才發(fā)出請(qǐng)求,則此時(shí)應(yīng)該跳轉(zhuǎn)到出錯(cuò)頁(yè)面,提示用戶(hù)重新登錄。對(duì)于非Ajax請(qǐng)求,可以自定義異常并針對(duì)此異常設(shè)置相應(yīng)的出錯(cuò)頁(yè)面。在用戶(hù)信息驗(yàn)證失敗的時(shí)候直接拋出此異常即可,web容器會(huì)自動(dòng)捕捉到此異常并且顯示出錯(cuò)頁(yè)面;但是,對(duì)于Ajax請(qǐng)求,則不會(huì)如期待的那樣自動(dòng)跳轉(zhuǎn)到出錯(cuò)頁(yè)面。若不錯(cuò)特殊處理,Ajax請(qǐng)求的回調(diào)函數(shù)會(huì)得到意想不到的數(shù)據(jù)而導(dǎo)致程序出錯(cuò)。分析對(duì)于一個(gè)Ajax的應(yīng)用,每一次客戶(hù)端和服務(wù)器的數(shù)據(jù)交互,可以看成是在一個(gè)由客戶(hù)端的XMLHttpRequest和服務(wù)器端的Servlet(這里假設(shè)用Servlet響應(yīng)Ajax請(qǐng)求)組成的閉合管道。解決在Filter中,判斷當(dāng)前用戶(hù)是否處理登錄狀態(tài),如果session已經(jīng)失效則調(diào)用response.getWriter.write("session_time_out");修改eos-ajax.js內(nèi)容,判斷返回的ajax.responseText的內(nèi)容是否為"session_time_out”,如果相等,則認(rèn)為session已經(jīng)失效并調(diào)用top.location="auth/login.jsp";注意eos-ajax.js是平臺(tái)js庫(kù)文件,所以像''auth/login.jsp"這樣的項(xiàng)目路徑最后采用配置的方式。總結(jié)對(duì)于Ajax的請(qǐng)求,其數(shù)據(jù)流是封閉的,服務(wù)器發(fā)送給在客戶(hù)端的數(shù)據(jù)都被XMLHttpRequest對(duì)象所獲得。本文通過(guò)從Filter中發(fā)出javascript代碼讓其在客戶(hù)端得到執(zhí)行,從而可以在session過(guò)時(shí)驗(yàn)證用戶(hù)信息失敗之后,讓客戶(hù)端自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面,與非Ajax請(qǐng)求時(shí)的客戶(hù)體驗(yàn)相一致。對(duì)于Ajax請(qǐng)求,此方法進(jìn)一步推廣,可以直接在服務(wù)器端發(fā)出javascript讓其在客戶(hù)端得到執(zhí)行。FTP大數(shù)據(jù)解決方案/articles/53c8c681e13823343b0000e3某客戶(hù)系統(tǒng)EOSPlatform流程數(shù)據(jù)丟失問(wèn)題定位以及故障排除過(guò)程文章>yang-yong>文章詳情某客戶(hù)系統(tǒng)EOSPlatform流程數(shù)據(jù)丟失問(wèn)題定位以及故障排除過(guò)程yang-yong發(fā)表于9個(gè)月前來(lái)自話(huà)題#應(yīng)用開(kāi)發(fā)平臺(tái)(EOSPlatform)#摘要:從解決問(wèn)題的角度,我們不建議用戶(hù)直接將Connection的autoCommit設(shè)置為false,理由就是這樣破壞了數(shù)據(jù)庫(kù)連接;如果用戶(hù)需要將連接設(shè)置為false,則需要在用完連接后,將連接的狀態(tài)設(shè)置回去;或者直接在外層使用事務(wù)??蛻?hù)環(huán)境產(chǎn)品版本:EOSPlatform6.5服務(wù)器:Was7,4個(gè)節(jié)點(diǎn)的集群數(shù)據(jù)庫(kù):Oracle11gJDK版本:1.6瀏覽器:IE7問(wèn)題描述客戶(hù)環(huán)境上主要表現(xiàn)為通過(guò)邏輯流調(diào)用了BPS的服務(wù),同時(shí)在邏輯流里面存在業(yè)務(wù)數(shù)據(jù)的操作,調(diào)用完邏輯流之后,流程數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)都丟失了,且整個(gè)過(guò)程沒(méi)有拋出異常,問(wèn)題只是偶然重現(xiàn),而且只能在正式環(huán)境上重現(xiàn),測(cè)試環(huán)境始終沒(méi)有重現(xiàn)問(wèn)題。問(wèn)題分析定位過(guò)程熟悉客戶(hù)系統(tǒng),了解問(wèn)題重現(xiàn)方式,發(fā)現(xiàn)流程數(shù)據(jù)丟失需要客戶(hù)操作很多次才會(huì)出現(xiàn)一次,重現(xiàn)概率比較低;熟悉客戶(hù)代碼,發(fā)現(xiàn)客戶(hù)的邏輯流里面存在嵌套事務(wù),且業(yè)務(wù)操作和流程操作在同一個(gè)事務(wù)里面,對(duì)流程的操作在一個(gè)子事務(wù)里面,邏輯流里面事務(wù)設(shè)置都是接收外部事務(wù),且同步j(luò)oin方式執(zhí)行,沒(méi)有新開(kāi)事務(wù)的情況,也不存在事務(wù)圖元不匹配的情況。分析報(bào)錯(cuò)后的錯(cuò)誤日志,發(fā)現(xiàn)錯(cuò)誤是從事務(wù)同步器里面拋出來(lái)的,原因是queryWorkItemDetail報(bào)錯(cuò),即找不到工作項(xiàng);正常的情況下,工作項(xiàng)不可能不存在,因?yàn)閳?zhí)行到事務(wù)同步器的時(shí)候,事務(wù)必定已經(jīng)提交了,而此時(shí)查詢(xún)工作項(xiàng)肯定可以查詢(xún)到,但是目前的錯(cuò)誤情況下,工作項(xiàng)不存在,即根據(jù)錯(cuò)誤日志可以推斷出:事務(wù)已經(jīng)提交,但是數(shù)據(jù)沒(méi)有入庫(kù)。一開(kāi)始對(duì)事務(wù)同步器理解不夠深刻,以為用戶(hù)調(diào)用了事務(wù)管理器的commit操作就會(huì)觸發(fā)同步器的方法,所以一開(kāi)始懷疑用戶(hù)可能是事務(wù)使用不當(dāng),事務(wù)管理器的begin,commit不匹配之類(lèi)的情況導(dǎo)致事務(wù)沒(méi)有正真提交,數(shù)據(jù)沒(méi)有入庫(kù),所以需要驗(yàn)證用戶(hù)是不是正真做了事務(wù)提交;驗(yàn)證事務(wù)是不是正真做了提交:添加日志,在邏輯流里面的事務(wù)提交圖元前后打印出事務(wù)狀態(tài),通過(guò)這個(gè)狀態(tài)就能判斷出事務(wù)管理器方法是不是存在不匹配的情況,同時(shí)在事務(wù)同步器里面打印出流程實(shí)例,活動(dòng)實(shí)例,工作項(xiàng)實(shí)例的ID以及狀態(tài),線(xiàn)程ID,請(qǐng)求ID之類(lèi)的信息,方便問(wèn)題重現(xiàn)后定位問(wèn)題;我們判斷事務(wù)狀態(tài)的目的是:如果用戶(hù)正真做了提交,而數(shù)據(jù)沒(méi)有入庫(kù),說(shuō)明和產(chǎn)品存在一定關(guān)系,如果用戶(hù)沒(méi)有做事務(wù)提交,則是用戶(hù)代碼的問(wèn)題,這樣我們就可以根據(jù)這個(gè)狀態(tài)進(jìn)行2個(gè)大的方向定位。分析錯(cuò)誤日志,對(duì)比正確情況和錯(cuò)誤情況,發(fā)現(xiàn)打印出的事務(wù)狀態(tài)2種情況是一樣的,提交前是活動(dòng)狀態(tài),提交后是無(wú)事務(wù)狀態(tài),說(shuō)明用戶(hù)正真做了事務(wù)提交,即用戶(hù)使用的事務(wù)管理器begin,commit是匹配的;而且分析事務(wù)同步器里面打印出的流程實(shí)例,活動(dòng)實(shí)例,工作項(xiàng)實(shí)例ID及狀態(tài)也都是一樣的,不存在異常情況,但是數(shù)據(jù)就是沒(méi)有進(jìn)入到數(shù)據(jù)庫(kù);由于事務(wù)管理器的使用方式?jīng)]有問(wèn)題,問(wèn)題又回到原點(diǎn);后續(xù)只能通過(guò)大量重現(xiàn)問(wèn)題,仔細(xì)分析日志,看還能否找到其他的蛛絲馬跡;由于這個(gè)問(wèn)題是偶然重現(xiàn),所以我們懷疑可能跟線(xiàn)程是否有關(guān)系,我們拿到大量的錯(cuò)誤日志后,仔細(xì)查找這個(gè)問(wèn)題是否和線(xiàn)程相關(guān),發(fā)現(xiàn)他們存在一定的聯(lián)系,我們分析日志得到規(guī)律是:如果一個(gè)線(xiàn)程出錯(cuò)后,后面所有由這個(gè)線(xiàn)程處理的邏輯流,流程數(shù)據(jù)都丟失,且有一個(gè)線(xiàn)程丟失的流程數(shù)據(jù)達(dá)8次之多;由于客戶(hù)現(xiàn)場(chǎng)不能對(duì)正式環(huán)境進(jìn)行遠(yuǎn)程調(diào)試,再加上測(cè)試環(huán)境一直重現(xiàn)不了,所以即使我們懷疑是線(xiàn)程問(wèn)題,但是也無(wú)法進(jìn)一步走下去。經(jīng)過(guò)討論會(huì)之后,我們開(kāi)始定位數(shù)據(jù)庫(kù)連接是否存在問(wèn)題;后續(xù)我們還是通過(guò)打日志的方式來(lái)判斷連接是否存在問(wèn)題;我們?cè)贐PS獲取連接的入口打印連接的實(shí)現(xiàn)類(lèi),連接的狀態(tài)等信息;同時(shí)在事務(wù)管理器里面增加日志,在連接的setAutoCommit,close,commit方法上增加日志;分析日志:對(duì)比正確日志和錯(cuò)誤日志可以發(fā)現(xiàn),正確情況下,Connection的autoCommit狀態(tài)是true,錯(cuò)誤情況下,Connection的autoCommit狀態(tài)是false;在正確情況下,Connection的autoCommit狀態(tài)是true,我們懷疑用戶(hù)的was環(huán)境存在問(wèn)題,因?yàn)镃onnection受事務(wù)管理之后,autoCommit狀態(tài)一定是false,所以我們驗(yàn)證用戶(hù)的環(huán)境是否是正常的;我們使用JSP做了最簡(jiǎn)單的驗(yàn)證:開(kāi)啟事務(wù),拿到連接,執(zhí)行第一條sql,然后執(zhí)行第二條sql,然后拋出異常,然后再執(zhí)行第3條sql,最后提交,拋出異常則回滾,部署到用戶(hù)的測(cè)試機(jī)器上驗(yàn)證,發(fā)現(xiàn)客戶(hù)的服務(wù)器并沒(méi)有回滾,前2條數(shù)據(jù)入庫(kù)了;所以我們斷定客戶(hù)的環(huán)境出了問(wèn)題。后面一天我們都在修改was服務(wù)的配置,以為是數(shù)據(jù)源配置錯(cuò)了,導(dǎo)致數(shù)據(jù)庫(kù)連接不受事務(wù)管理;折騰了一天之后,最后發(fā)現(xiàn)was環(huán)境下,即使外部開(kāi)了事務(wù),Connection的autoCommit狀態(tài)就是true,不像tomcat,Connection受事務(wù)管理之后,autoCommit是false;根據(jù)日志,如果說(shuō)Connection的autoCommit狀態(tài)是true是正確的,那么Connection的狀態(tài)是false則可能就會(huì)存在問(wèn)題;因?yàn)檎_日志和錯(cuò)誤日志只有這個(gè)地方存在區(qū)別;所以這個(gè)時(shí)候我們懷疑是連接壞了;繼續(xù)分析日志,發(fā)現(xiàn)日志里面有在邏輯流里面調(diào)用了setAutoCommit的方法,用戶(hù)代碼將autoCommit屬性設(shè)置了false,所以我們?nèi)プ卟橛脩?hù)代碼,找到調(diào)用setAutoCommit的地方。解決問(wèn)題找到用戶(hù)代碼之后,詢(xún)問(wèn)當(dāng)事人為什么需要將Connection設(shè)置成false,當(dāng)事人也說(shuō)不出正確的理由,而且還說(shuō)這個(gè)可以去掉,他只是復(fù)制的;所以我們將這行代碼注釋好之后,部署到測(cè)試服務(wù)器驗(yàn)證;同時(shí)驗(yàn)證打補(bǔ)丁之前和打補(bǔ)丁之后的測(cè)試環(huán)境,此時(shí),則是環(huán)境能重現(xiàn)問(wèn)題了,然后打上補(bǔ)丁之后,問(wèn)題未能重現(xiàn)。第二天將補(bǔ)丁打到生產(chǎn)環(huán)境,問(wèn)題也未能重現(xiàn),問(wèn)題即解決。在問(wèn)題的驗(yàn)證過(guò)程中,有人提出,在was容器下,Connection的autoCommit狀態(tài)無(wú)論是true或者false對(duì)事務(wù)管理器沒(méi)有任何影響,因?yàn)橥ㄟ^(guò)走j2ee事務(wù)的標(biāo)準(zhǔn)接口,在was容器下,無(wú)論autoCommit的狀態(tài)是true還是false,事務(wù)管理器都是正常的;第二天我們對(duì)這一問(wèn)題進(jìn)行了驗(yàn)證,發(fā)現(xiàn)在was環(huán)境下,通過(guò)j2ee事務(wù)的標(biāo)準(zhǔn)接口使用事務(wù),Connection的autoCommit狀態(tài)true或者false,標(biāo)準(zhǔn)接口的事務(wù)確實(shí)不受影響;所以從另一個(gè)方面來(lái)說(shuō),eos的事務(wù)管理器對(duì)Connection的autoCommit狀態(tài)為false這種情況支持的不夠完善;結(jié)論1.從解決問(wèn)題的角度,我們不建議用戶(hù)直接將Connection的autoCommit設(shè)置為false,理由就是這樣破壞了數(shù)據(jù)庫(kù)連接;如果用戶(hù)需要將連接設(shè)置為false,則需要在用完連接后,將連接的狀態(tài)設(shè)置回去;或者直接在外層使用事務(wù)。2.從產(chǎn)品的角度,由于標(biāo)準(zhǔn)接口true或者false2種情況都支持,所以也可以說(shuō)是EOS的事務(wù)管理器支持的不完善,在特定的環(huán)境下,事務(wù)管理器應(yīng)該支持這2種情況。EOS6中配置C3P0數(shù)據(jù)源自動(dòng)重連方案文章>hanning>文章詳情EOS6中配置C3P0數(shù)據(jù)源自動(dòng)重連方案hanning發(fā)表于9個(gè)月前來(lái)自話(huà)題#應(yīng)用開(kāi)發(fā)平臺(tái)(EOSPlatform)#【適用范圍】EOS6.0、Tomcat、Jboss、Oracle【問(wèn)題描述和定位]在使用EOS6.0的時(shí)候,啟動(dòng)了Server后,如果網(wǎng)絡(luò)出現(xiàn)問(wèn)題Connectionreset異常,Oracle數(shù)據(jù)庫(kù)連接斷了后就不能進(jìn)行操作了,需要重新啟動(dòng)Server。那么,怎樣配置可以避免重啟Server,特別對(duì)于生產(chǎn)環(huán)境而言,需要盡可能的避免重啟?!窘鉀Q方案和步驟】1、Tomcat:在EOSGovernor控制臺(tái)的配置->數(shù)據(jù)源中,選中某數(shù)據(jù)源,點(diǎn)擊修改,將連接重試次數(shù)〃默認(rèn)值-1修改為1,點(diǎn)擊''確定%保存。重啟Server?;蛘咧苯有薷哪夸汥:\primetonfor3207_platform\eosserver\working\eos-default\config下user-config.xml文件中DataSource的配置:<configValuekey="Retry-Connect-Count">-1</configValue>修改為<configValuekey="Retry-Connect-Count">1</configValue>2、JBoss:修改$JBOSS_HOME\server\default\deploy下的EOSProductDataSource-ds.xml,將默認(rèn)的數(shù)據(jù)源配置改成如下(與EOS5環(huán)境下配置類(lèi)似):<local-tx-datasource><jndi-name>EOSDefaultDataSource</jndi-name><connection-url>jdbc:oracle:thin:@23:1521:pso</connection-url><driver-class>oracle.jdbc.driver.OracleDriver</driver-class>〈connection-propertyname="user">eos60</connection-property>〈connection-propertyname="password">eos60</connection-property><min-pool-size>5</min-pool-size><max-pool-size>100</max-pool-size><blocking-timeout-millis>5000</blocking-timeout-millis><idle-timeout-minutes>15</idle-timeout-minutes><valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name><check-valid-connection-sql>select1fromdual</check-valid-connection-sql><new-connection-sql>select1fromdual</new-connection-sql></local-tx-datasource>【備注】修改這個(gè)配置還可以解決如果系統(tǒng)中需要多數(shù)據(jù)源的話(huà),在這個(gè)文件中增加一個(gè)local-tx-datasource配置;上面的配置可能對(duì)系統(tǒng)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的性能有影響,有可能每次拿數(shù)據(jù)庫(kù)連接的時(shí)候都會(huì)自動(dòng)調(diào)用這個(gè)sql語(yǔ)句;Weblogic、Websphere等應(yīng)用服務(wù)器也應(yīng)該提供了類(lèi)似的自動(dòng)重連機(jī)制,可以進(jìn)到它們的控制臺(tái)查看。EOS異常處理方法異常獲取EOS的異常獲取分為兩種,一種是在邏輯流中獲取異常,另一種是在java代碼中獲取異常。1.在邏輯流中獲取異常如上圖所示,開(kāi)發(fā)人員需要在特定的圖元上通過(guò)添加異常線(xiàn)并添加異常拋出圖元(在左側(cè)工具面板中的高級(jí)中)的方式來(lái)獲取特定的異常信息。異常拋出圖元需要開(kāi)發(fā)人員先在構(gòu)件包的配置文件中加入自定義的異常信息,對(duì)圖元進(jìn)行配置是選擇相對(duì)應(yīng)的ERRORCODE和ERRORMESSAGE。ERRORMESSAGE可以定義變量,以{0},{1}的方式來(lái)進(jìn)行變量綁定。配置文件路徑:配置/resources/exception/perties。該配置支持中文并自動(dòng)轉(zhuǎn)碼,同樣在也支持國(guó)際化的配置。對(duì)于異常處理圖元更詳細(xì)的說(shuō)明可以在EOSStudi。的幫助文檔中找到,具體路徑:EOS幫助文檔->技術(shù)參考->EOS基礎(chǔ)參考手冊(cè)->邏輯流->邏輯流編輯器->異常拋出。|fexceptionprop-ertiesresourcefile.1^0001=\u621L\u7684\u7B2C\u4E09\u4E5F02\u5E3S-\u4FEL\u606F{0}-\u5F20\u&0E0\u946-B2.在java代碼中獲取異常EOS提供了默認(rèn)實(shí)現(xiàn)的EOSException。當(dāng)特定的springbean或者運(yùn)算邏輯圖元需要拋出異常,可以直接在代碼中通過(guò)newEOSExcepti
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《電電子基礎(chǔ)訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財(cái)經(jīng)大學(xué)《人文地理學(xué)基本問(wèn)題》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年陜西省建筑安全員考試題庫(kù)
- 貴陽(yáng)信息科技學(xué)院《管理學(xué)精要》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州珠江職業(yè)技術(shù)學(xué)院《組合與運(yùn)籌》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025海南省建筑安全員B證考試題庫(kù)及答案
- 2025福建省安全員考試題庫(kù)附答案
- 廣州幼兒師范高等專(zhuān)科學(xué)?!陡呒?jí)聽(tīng)說(shuō)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州新華學(xué)院《量子力學(xué)(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《曲式與作品分析Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 如何防范勒索軟件和網(wǎng)絡(luò)勒索攻擊
- T-CI 228-2023 寧?kù)o小區(qū)建設(shè)與評(píng)價(jià)技術(shù)規(guī)范
- 二年級(jí)數(shù)學(xué)綜合素質(zhì)評(píng)價(jià)專(zhuān)項(xiàng)方案
- 讀書(shū)分享遙遠(yuǎn)的救世主
- 成人有創(chuàng)機(jī)械通氣氣道內(nèi)吸引技術(shù)操作解讀護(hù)理課件
- 通信安全生產(chǎn)培訓(xùn)課件
- 智能膠囊內(nèi)鏡導(dǎo)航算法研究
- 人力資源產(chǎn)業(yè)園可行性方案
- 《新疆大學(xué)版學(xué)術(shù)期刊目錄》(人文社科)
- 2024年初級(jí)社會(huì)工作者《社會(huì)工作綜合能力》模擬試卷一
- 重慶市2023-2024學(xué)年高一上學(xué)期期末聯(lián)合檢測(cè)物理試卷(含答案解析)
評(píng)論
0/150
提交評(píng)論