• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于 Java調用WebService的應用實例

    2010-09-07 09:13:26
    中低緯山地氣象 2010年2期
    關鍵詞:調用校驗語句

    左 斌

    (重慶市彭水縣氣象局,重慶 彭水 409600)

    基于 Java調用WebService的應用實例

    左 斌

    (重慶市彭水縣氣象局,重慶 彭水 409600)

    簡要介紹了基于 Java就省、市氣象局WebService實時數(shù)據(jù)庫接口應用于本地數(shù)據(jù)庫的程序設計??芍苯荧@取適時雨量、溫度等氣象要素數(shù)據(jù),并持久化到本地數(shù)據(jù)庫。該技術現(xiàn)已在彭水縣氣象信息系統(tǒng) (互聯(lián)網(wǎng) http:// 219.153.254.73/qx和 http://219.153.254.73/qx/psqxj.jsp)上成功實現(xiàn)。

    Java;數(shù)據(jù)庫;接口;多線程

    1 引言

    省、市氣象局實時和歷史數(shù)據(jù)庫檢索接口的建立,為各區(qū)(縣)局通過實時數(shù)據(jù)庫檢索接口獲取本區(qū)(縣)自動站和區(qū)域自動站實時數(shù)據(jù),實現(xiàn)實時數(shù)據(jù)本地化,構建區(qū) (縣)級氣象信息平臺,更好地為地方各級政府、部門、鄉(xiāng)鎮(zhèn)提供實時的氣象數(shù)據(jù)服務(圖 1),是深化決策、安全氣象服務的重要內容之一。本文就基于 Java平臺如何通過實時數(shù)據(jù)庫檢索接口定時獲取實時數(shù)據(jù),實現(xiàn)數(shù)據(jù)的存儲校驗作出了詳細闡述。

    圖 1 氣象數(shù)據(jù)服務網(wǎng)絡拓撲圖

    2 實時數(shù)據(jù)庫接口應用程序的特點

    實時數(shù)據(jù)庫檢索應用程序既要能夠定時通過省、市數(shù)據(jù)庫接口把存儲在數(shù)據(jù)庫中有關本地的自動站數(shù)據(jù)檢索出來,定時插入到本地數(shù)據(jù)庫,實現(xiàn)本地數(shù)據(jù)庫與省、市數(shù)據(jù)庫的同步和一致,又要考慮到可能出現(xiàn)的數(shù)據(jù)傳輸?shù)裙收?出現(xiàn)數(shù)據(jù)漏傳的情況,具備定時校驗本地數(shù)據(jù)庫數(shù)據(jù)完整性功能,定時將漏傳的數(shù)據(jù)檢驗出來,補傳到本地數(shù)據(jù)庫。實時數(shù)據(jù)庫接口應用程序存取的數(shù)據(jù)應具有可用性 (Availability)、完整性 (Integrity)、真實性 (Authenticity)特點。

    3 數(shù)據(jù)庫設計

    以獲取重慶自動站實時地面氣象要素資料 (Z_ O_AWS_ST_C5_CQ)〔1〕中彭水站點的數(shù)據(jù)為例,可設計出與之相對應的本地數(shù)據(jù)庫中的站表“pengshui”(表 1)。

    以MySQL數(shù)據(jù)庫為例,創(chuàng)建數(shù)據(jù)庫和表的順序為:首先,進入MySQL Command Line Client命令行,創(chuàng)建好本地庫“info”;然后,按站點建表,創(chuàng)建各自動站的表(具體代碼略)。

    4 數(shù)據(jù)庫連接

    4.1 數(shù)據(jù)庫連接技術

    數(shù)據(jù)庫連接技術—JDBC(Java Database Connectivity)是用于執(zhí)行語句的應用程序編程接口 API。JDBC能為開發(fā)者提供標準的數(shù)據(jù)庫訪問類和接口,能夠方便地向任何異構數(shù)據(jù)庫發(fā)送 SQL語句,同時JDBC是一個支持基本 SQL查詢功能的低層應用程序接口,能在不同的數(shù)據(jù)庫功能的層次上提供一個統(tǒng)一的用戶界面,同時支持高層的數(shù)據(jù)庫訪問工具及API。

    第一步是裝載 JDBC驅動程序。通常采用的是調用方法 Class.for Name顯式地加載驅動程序類,格式為:

    Class.for Name

    (“companyName.databaseName.DriverName”);

    第二步是與數(shù)據(jù)庫建立連接,采用的標準方式是調用 Drive rManager.getConnection方法,下列代碼是一般的做法:

    Connection conn=Drive rManager.getConnection (url,“Login”,“Pass word");

    式中 url為統(tǒng)一資源定位器,代表要進行連接的數(shù)據(jù)庫?!癓ogin”和“Password”替換為實際登錄的DBMS的用戶名和口令。若連接成功,則返回一個 Connection類的對象 conn。

    連接一旦建立,下一步就可向所涉及的數(shù)據(jù)庫傳送 SQL語句。JDBC提供了 Statement、Prepared-Statement、CallableStatement三個類,用于向數(shù)據(jù)庫發(fā)送 SQL語句。其中 Statement對象用于發(fā)送不帶參數(shù)的簡單的 SQL語句;PreparedStatement對象用于發(fā)送帶或不帶輸入?yún)?shù)的 SQL語句;CallableS-tatement對象用于執(zhí)行 SQL儲存程序的調用。由方法 createStatement建立名為 stmt的 Statement對象的格式為:

    Statement stmt=conn.createStatement();

    需要指出的是,stmt不包含傳送給 DBMS的 SQL語句,需要提供執(zhí)行 stmt的方法。Statement接口提供了三種執(zhí)行 SQL語句的方法:executeQuery、executeUpdate和 execute。方法 executeQuery用于產生單個結果集;方法 executeUpdate用于執(zhí)行 INSERT、UPDATE或DELETE語句;方法 execute用于執(zhí)行返回多個結果集。下面給出采用 execQuery方法的語句格式:

    ResultSet rs= stmt.executeQuery("SQL語句");

    executeQuery的參數(shù)是一個查詢語句,它的返回值保存在 ResultSet類對象 rs中〔2〕。

    表 1 pengshui自動站表

    4.2 數(shù)據(jù)庫連接類的設計

    為了方便主程序調用數(shù)據(jù)庫連接等操作,通常把對數(shù)據(jù)庫的各種操作,采用請求轉發(fā)的原理設計封裝成一個數(shù)據(jù)庫連接基類 (DB.java),由數(shù)據(jù)庫連接基類來封裝基于 JDBC的連接數(shù)據(jù)庫 (代碼略)。

    5 多線程實現(xiàn)定時檢索和存儲校驗

    多線程是 Java的一個重要特點,這使得在一個Java程序內部可同時進行多種運算,從而充分利用系統(tǒng)資源,提高程序運行效率。多線程程序可提高系統(tǒng)的輸入/輸出速度、有效利用系統(tǒng)資源、改善計算機通訊功能等優(yōu)點。

    程序運用 Java多線程實現(xiàn)縣局自動站數(shù)據(jù)、區(qū)域自動站數(shù)據(jù)的定時獲取和數(shù)據(jù)存儲校驗及其定時補傳功能。實現(xiàn)數(shù)據(jù)從市局數(shù)據(jù)庫接口每小時定時讀取的思路是,啟用一個線程,用 Calendar類(日歷類)的 getInstance()方法得到一個時間點,判斷它是否為指定的上傳時間。true,則執(zhí)行 getdatatoarray方法獲得本站現(xiàn)在的氣象要素數(shù)據(jù)并添加到本地數(shù)據(jù)庫,執(zhí)行完畢后,讓線程休眠較長時間段(58min);false,則讓線程休眠較短的時間段 (58s),再執(zhí)行以上判斷,并把這個 if語句置于一個 while (true)語句內反復運行來實現(xiàn)不間斷的自動獲取每小時實時數(shù)據(jù)。實現(xiàn)數(shù)據(jù)補傳的思路是,啟用第二個線程,編寫一個從 0到 23的循環(huán),用 dataCheck ()檢索本地數(shù)據(jù)庫中是否正確插入昨日逐小時的數(shù)據(jù),如果沒有數(shù)據(jù),則補傳。

    6 實體類的設計

    構建好數(shù)據(jù)庫,寫好數(shù)據(jù)庫連接基類后,接著應設計站點實體類,就站點對象抽象出來的 rainfallhour、airtemp、relhumidity等屬性,分別寫出 set和 get方法,并在這個類中封裝數(shù)據(jù)存儲和數(shù)據(jù)校驗等方法。部份核心代碼如下:

    7 主程序的設計

    主程序采用 MySQL作為數(shù)據(jù)庫服務器,Net-Beans作為編程工具和設計工具,在程序編寫前,需要建立一個 Web Service Client,并對 WSDL URL、Client Style等參數(shù)進行配置[3]。

    圖 2 主程序控制流程圖

    7.1 主程序控制流程圖(圖 2)

    7.2 主程序代碼

    根據(jù)多線程的設計方案和從市局數(shù)據(jù)庫接口每小時定時讀取的思路,可設計出本數(shù)據(jù)庫接口應用實例的主程序 (main.java)。部份核心代碼如下:

    8 結束語

    該實時數(shù)據(jù)庫接口應用實例在設計時從整體考慮,建立了嚴格的完整性規(guī)則和科學數(shù)據(jù)庫結構,將定時檢索省(市)級數(shù)據(jù)庫接口、存儲過程、數(shù)據(jù)完整性校驗應用到程序設計中,加大了后臺的功能和效率,對數(shù)據(jù)庫的安全、自動化定時存取做了充分的考慮,提高了氣象數(shù)據(jù)本地化應用水平。該實時數(shù)據(jù)庫接口應用程序設計為本地氣象信息系統(tǒng)的開發(fā)打下了良好的基礎,只要結合前臺開發(fā)工具和平臺,就能實現(xiàn)系統(tǒng)的強大功能。

    [1] 實時和歷史數(shù)據(jù)庫檢索接口應用方法—應用文檔說明 .

    [2] 趙景林 .利用 JDBC訪問面向 Internet的數(shù)據(jù)庫[J].微機發(fā)展,2001,11(5):33-35.

    TP311

    B

    2010-09-10

    左斌(1973-),男,工程師,主要從事信息網(wǎng)絡管理工作。

    1003-6598(2010)增刊 -0183-04

    猜你喜歡
    調用校驗語句
    重點:語句銜接
    核電項目物項調用管理的應用研究
    LabWindows/CVI下基于ActiveX技術的Excel調用
    測控技術(2018年5期)2018-12-09 09:04:46
    爐溫均勻性校驗在鑄鍛企業(yè)的應用
    精彩語句
    基于系統(tǒng)調用的惡意軟件檢測技術研究
    大型電動機高阻抗差動保護穩(wěn)定校驗研究
    電測與儀表(2015年1期)2015-04-09 12:03:02
    基于加窗插值FFT的PMU校驗方法
    鍋爐安全閥在線校驗不確定度評定
    如何搞定語句銜接題
    語文知識(2014年4期)2014-02-28 21:59:52
    库尔勒市| 铜陵市| 漯河市| 奇台县| 吉安县| 洛浦县| 南京市| 咸宁市| 太原市| 屯留县| 上杭县| 合山市| 务川| 克拉玛依市| 永嘉县| 环江| 新竹县| 吉木乃县| 包头市| 辽中县| 山东省| 抚远县| 庆元县| 丰镇市| 开江县| 鹿泉市| 临夏县| 新宁县| 潼南县| 泰宁县| 河间市| 贺州市| 安龙县| 宁国市| 称多县| 获嘉县| 鄂州市| 塔河县| 中超| 嘉祥县| 永安市|