pb 接口开发
工作需要用WebService方式做接口,折騰了半月,走了無數彎路,才初見眉目。為了避免堅守PB開發的老中青同學們以后遇到同樣的問題,在此做個簡要總結。
——by nocry115/泥草鞋
前言:
無論哪種接口,無非2類:①開發入口,接收對方輸出接口數據;②開發出口,以對方要求接口格式輸出數據。對于WebService接口來說,第1種是需要我們來開發WebService服務及方法給對方調用,開發部署工作肯定多些;第2種則是調用對方的WebService服務,這方面已有很多前行的PBer為我們指路。
調用Webservice,PB9開始就在新建Project里多了Web Service Proxy (Wizard);但需要注意的是,由于PB對windows系統的依賴,即使PB12.6對Webservice的支持也不完善。而要開發Webservice的應用服務端,至少需要PB10,在此選用了PB11.5。
另,開發Webservice服務,windows操作系統不要用XP,開發環境缺陷會造成各種問題,曾到處發帖求助,最后發現完全是系統環境造成的,必須選用適合Webservice服務的操作系統,否則無解。
PB11.5+oracle10G(32位)+Webservice+WIN7(64位)
這里寫圖片描述
1.Oracle數據庫:
PB的亮點之一在于數據庫開發。Oracle數據庫9i及以下在win7以上安裝不了,oracle10G不能安裝64位的,否則將開發的WebService服務會出現“oracle 庫 oci.dll 無法加載錯誤”!
oracle10G(32位)在win7系統安裝注意事項:
a)修改database\stage\prereq\db\refhost.xml,添加:
<OPERATING_SYSTEM>
</OPERATING_SYSTEM>
1
2
3
b)修改database\install\oraparam.ini文件,添加:
[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
#Windows=5.0,5.1,5.2,6.0,6.1 #只添加6.1(win7以上的版本號)
[Windows-6.1-required]
#Minimum display colours for OUI to run
MIN_DISPLAY_COLORS=256
#Minimum CPU speed required for OUI
#CPU=300
[Windows-6.1-optional]
c)安裝完后進入控制臺 http://localhost:1158/em/ 如果報錯,修改時區:
搜索安裝后的文件:emd.properties修改:
agentTZRegion=Asia/Chungking
1
在系統運行cmd中輸入以下命令:(假設orcl為SID)
set ORACLE_SID=orcl
emctl stop dbconsole
emctl start dbconsole
1
2
3
2.WIN7(64位)環境:
a)在【控制面板】-【程序】-【打開或關閉Windows功能】中:
勾選【MIcrosoft.Net Framework 3.5.1】
勾選【internet服務】-【萬維網服務】-【應用程序開發功能】中的【ASP.NET】和【ISAPI擴展】
這里寫圖片描述
b)桌面【計算機】-右鍵【管理】,在【服務和應用程序】的【IIS管理器】中,將默認網站指向你的網站目錄或沿用從前的
3.PB11.5開發Webservice應用:
a)建立一個p_yourwebservice服務時,將自動生成一個同名的n_yourwebservice不可視對象,在n_yourwebservice編寫函數(如:of_insert_test()、of_insert_test2())。
b)設置好p_yourwebservice的參數(如圖):
在【General】中可選Build type為Release
這里寫圖片描述
在【Deploy】中默認發布到本機IIS萬維網服務
這里寫圖片描述
在【Objects】中勾選上你的函數;保存后點擊菜單編譯Deploy Project。
這里寫圖片描述
注:Web Service WSDL欄中的鏈接,即為你提供給對方的WSDL。
c)在p_yourwebservice【object】中點擊【Run Web Service】,看看運行結果:
這里寫圖片描述
可在網頁上點擊你定義的函數,輸入相應參數提交,測試結果。
d)實測通過Web Service對oracle數據庫操作不穩定,有時成功有時失敗,解決方法:
在n_yourwebservice的創建事件中:
//定義好數據庫各屬性,如
SQLCA.DBMS = “O90 Oracle9i (9.0.1)”
//……并加上:
connect using SQLCA;
disconnect using SQLCA;
//在你的每個n_yourwebservice數據庫函數里,開頭進行:
connect using SQLCA;
//函數結束前
disconnect using SQLCA;
PB11.5+oracle10G(32位)+Webservice+WIN2008Server R2(64位)
1.Oracle數據庫:
如上,請安裝oracle10G(32位),否則:
【Oracle library OCI.DLL could not be loaded】 的錯誤會等著你
2.WIN2008Server R2(64位)環境:
a)在【計算機】右鍵【管理】-【角色】中添加:【Web服務器(IIS)】,其中【應用程序開發】項勾選【ASP.NET】和【ISAPI擴展】
b)在【計算機】右鍵【管理】-【角色】中添加:【應用程序服務器】,勾選【.Net Framework 3.5.1】
c)在【服務器管理器】-【角色】-【Web服務器(IIS)】-【Internet 信息服務】中:
這里寫圖片描述
展開應用服務器下的【網站】,停止默認的網站,創建新網站,指向你的Webservice目錄。為避免新網站的端口沖突,可重新【綁定】一個端口,如:9090。
3.PB11.5開發環境下Webservice應用移植到應用服務器:
a)開發環境下,再編譯p_yourwebservice,在【Deploy】項不要選編譯到IIS,要選擇“生成安裝文件”(.msi)
b)編譯后的.msi文件,copy到應用服務器運行一下。
可查看下【服務器管理器】-【角色】-【Web服務器(IIS)】-【Internet 信息服務】中的【網站】,如果你的網站其下項顯示的是網站目錄(虛擬目錄,還有一個同級目錄是YourWebservice_root),請右鍵轉換為【應用程序】。
(應用程序池此時自動為PBAppPool,經典的.Net Framework v2.0.50727類型 )
在應用服務器IE上瀏覽下效果,注意加端口:
http://服務器IP:9090/yourwebservice/n_yourwebservice.asmx
c)遠端客戶IE上瀏覽下效果:
http://服務器IP:9090/yourwebservice/n_yourwebservice.asmx
如出現權限不足錯誤提示:
運行時錯誤
請在應用服務器上你的Webservice應用目錄中,找到Web.Config,在<system.web></system.web>之間加入:
d)在開發環境下n_yourwebservice中編寫了2個功能相同的函數,1個完全用SQL語句,1個用datastore進行update,奇怪的問題出現:用SQL語句的函數結果正常,用datastore的函數對string類型的字段更新失敗,數值、時間類型的沒有問題!
解決方法:將數據庫連接的語法選項中去掉引號項
這里寫圖片描述
重新生成datastore對應的數據窗口,重新編譯,發布到服務器即可。
轉自:https://blog.csdn.net/nocry115/article/details/52503864
總結
- 上一篇: Angular2升级到Angular4
- 下一篇: CodeVs——T 4919 线段树练习