1. 程式人生 > >遠端過程呼叫中介軟體及資料訪問中間…

遠端過程呼叫中介軟體及資料訪問中間…

一 實習目的

通過例項掌握RMI,RPC,JDBC等中介軟體的使用。

二 實習要求

1)RPC實現遠端計算服務。伺服器端提供計算服務;客戶端呼叫計算服務。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)



遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)



遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

2)RMI+JDBC遠端資料庫的訪問。實現簡單的成績查詢系統(建立表,錄入成績,查詢成績等)。在伺服器端,通過JDBC訪問資料庫。客戶端呼叫服務端提供的各種資料庫操作。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

三 實驗過程

  1 利用RPC實現遠端計算服務。

   (1)使用IDL定義服務介面mathservice.idl, 定義計算服務操作, 參考RPC例項hello.idl。

   (2)編寫配置檔案mathservice.acf, 定義繫結控制代碼,參考RPC例項Hello.acf.

   (3)  編譯mathservice.idl檔案

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

   (4) 編寫服務端程式

   啟動VC,建立win32-console Application空白工程mathservice。工程路徑設定為$example_dir$/server。將mathservice.h, mathservice_s.c, server.c新增至工程中。 

   新增RPC執行庫rpcrt4.lib至工程。操作如下:

   Project-setting-link-Object/library modules:

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

編譯連線工程,生成mathservice.exe

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

(5) 編寫客戶端程式

建立$example_dir$/client資料夾,並將mathservice.h, mathservice_c.c拷貝至此資料夾中。並編寫client

.c,請參RPC例項client.c. 其餘操作與伺服器端(4)相同。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

(6) 測試

  啟動mathservice.exe

然後在client端輸入資料,得到結果,測試如下截圖效果:

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

 2 RMI+JDBC遠端資料庫的訪問

(1) 使用mysql-connector-java-5[1].0.8.zip驅動包,編寫DBmanager類,訪問mysql資料庫,實現建立表,錄入成績,查詢成績等操作

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

      (2)定義服務介面DataService請參考RMI例項DataServie.java。提供建立表,錄入成績,查詢成績等操作(儘量與DBmanager類中的操作定義成同樣的形式)。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

      (3)實現服務,請參考RMI例項DataServiceImpl。對實現建立表,錄入成績,查詢成績等操作。實現過程中可直接使用DBmanager類。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

      (4)編寫部署類DeployServer,請參考RMI例項DeployServer.java。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

      (5)使用DataService介面,實現客戶端,請參考RMI例項RmiHelloClient.java。

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

遠端過程呼叫中介軟體及資料訪問中介軟體(RMI)

四 實習總結

       雖然是第一次實驗,但是卻因為前段時間做專案的原因,一直拖著沒有完成,直到最近放假才得以有時間補上。本次實驗為遠端過程呼叫中介軟體及資料訪問中介軟體,通過RPC和RMI分別完成VC和Java的程式設計,分別使用遠端過程呼叫完成了數學的加減操作、使用資料訪問中介軟體完成對資料庫的操作。

       通過本次實驗,開始逐漸的瞭解了遠端訪問中介軟體和遠端過程呼叫的使用方法和作用,在實驗中的(1)中遇到了一點小問題,但是經過同學幫助,理解了其中的原理。實驗中的(2)是今天剛剛完成的,所以印象比較深刻,主要探討一下,在這個實驗中遇到的問題。

       問題1. 由於沒有注意到實驗中強調的修改jdk\jre\lib\security\ java.policy,由於沒有注意這個問題,所以在編譯時總是提示錯誤,最後在同學的幫助下,發現了問題。

       問題2. 解決了第一個問題之後,再次編譯發現,總是提示$Proxy cannot cast to …的錯誤,而同學都說沒有遇到這類問題,所以這令我很是苦惱,經過了一天的修改、網上查詢答案,都沒有找到合適的答案。於是我認真的研究了一下老師給出的例子的目錄結構,得到了這麼一個結論,在同一個Eclipse中執行伺服器端和客戶端,就會出現目錄結構混亂的問題。因為在客戶端呼叫的程式中呼叫的應該是伺服器端的DataService介面,而不是自己包中的DataService,這是我檢查出的型別轉換錯誤的地方,我理解為在它自己的包中沒有實現其介面(也就是沒有DataServiceImpl),所以出現了轉換失敗的情況。

相關推薦

遠端過程呼叫中介軟體資料訪問中間

一 實習目的 通過例項掌握RMI,RPC,JDBC等中介軟體的使用。 二 實習要求 1)RPC實現遠端計算服務。伺服器端提供計算服務;客戶端呼叫計算服務。 2)RMI+JDBC遠端資料庫的訪問。實現簡單的成績查詢系統(建立表,錄入成績,查詢成績等)。在伺服器端,通過JDBC訪問資料庫。客戶端呼叫服

RPC(遠端過程呼叫)原理應用

RPC 是構建 hadoop 體系結構的基石。 RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議。所謂遠端過程呼叫,也即是遠端呼叫過程,它是一種通過網路從遠端計算機程式上請求服務(某一過程),而不需要了解底層網

com.microsoft.sqlserver.jdbc.SQLServerException: 傳入的表格格式資料流(TDS)遠端過程呼叫(RPC)協議流不正確。此 RPC 請求中提供了過多的引數。

sqlserver在做批量插入的時候出現這個錯誤: com.microsoft.sqlserver.jdbc.SQLServerException: 傳入的表格格式資料流(TDS)遠端過程呼叫(RPC)協議流不正確。此 RPC 請求中提供了過多的引數。最多應為 2100。

遠端呼叫中介軟體(RPC)

RPC 是指計算機 A 上的程序,呼叫另外一臺計算機 B 上的程序,其中 A 上的呼叫程序被掛起,而 B 上的被呼叫程序開始執行,當值返回給 A 時,A 程序繼續執行。呼叫方可以通過使用引數將資訊傳送

奇怪的資料插入異常:傳入的表格格式資料流(TDS)遠端過程呼叫(RPC)協議流不正確。

前天完成了手頭的工作後,經理交給我一個bug讓我看下,我接過後看了下Bug資訊,是從未見過的異常,但根據異常資訊提示又很容易判斷出異常原因。 異常資訊:傳入的表格格式資料流(TDS)遠端過程呼叫(RPC)協議流不正確。引數 7 ("@ExchangeRate"): 提供的值不

RPC遠端過程呼叫原理模擬RPC的Demo

什麼是 RPC由於各服務部署在不同機器,服務間的呼叫免不了網路通訊過程,服務消費方每呼叫一個服務都要寫一坨網路通訊相關的程式碼,不僅複雜而且極易出錯。如果有一種方式能讓我們像呼叫本地服務一樣呼叫遠端服務,而讓呼叫者對網路通訊這些細節透明,那麼將大大提高生產力,比如服務消費方在

C++ 簡單遠端呼叫中介軟體設計

   我寫過一些 socket 程式, 隨著程式的逐步複雜,直接用 socket 程式設計顯得有些麻煩。根據軟體應該模組化的思想,應該把軟體中的 socket 通訊部分相對獨立出來做成一個“中介軟體”。我用 C++ 寫了一個最簡單的“遠端呼叫中介軟體” 原理演示程式, 共享出來和大家討論(本人水平有限,如有錯

C++ 簡單遠端呼叫中介軟體設計 (三)

 今天 “C++ 簡單遠端呼叫” 第三版完成了,現在我叫他 “gcpprc” ,這次主要改進了遠端呼叫過程中引數的打包和解包過程。這次我把 gcpprc 和演示程式的原始碼分成兩組原始檔,這樣 gcpprc 就可以單獨編譯成一個共享庫。我決定 gcpprc 在 lgpl2 協

RPC 協議 Remote process call 遠端過程呼叫

RPC資訊協議由兩個不同結構組成:呼叫資訊和答覆資訊。 簡單的說,RPC就是從一臺機器(客戶端)上通過引數傳遞的方式呼叫另  一臺機器(伺服器)上的一個函式或方法(可以統稱為服務)並得到返回的結果。 RPC 會隱藏底層的通訊細節(不需要直接處理Socket通訊或Http通訊

中介軟體tomcat的記憶體溢位調優

主要是這三個選項的調整需要根據主機的記憶體配置 以及業務量的使用情況調節 -Xmx4g -Xms4g -Xmn2g xmx 與xms一般設定為一樣 xmn大致設定為xmx xms的三分之一   可以使用jstat -gcutil  (pid)  100

RPC(遠端過程呼叫)簡介

RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。 之前聽過這個名詞,但是也只是大概記住了“遠端呼叫”之類的關鍵詞,而其他並沒有太多瞭解。 來到TX實習,確實如別人所說的那樣

Sql Server服務遠端過程呼叫失敗解決

今天在配置SqlServer啟動引數時,發現"開始選單"->“配置工具”->“SQL Server 配置管理器”中的“SQL Server 服務”一項,右邊欄裡顯示的是“遠端過程呼叫失敗[0x800706be]”。經過仔細分析,發現這是由於我安裝VS2012時附帶安裝了更高版本的“S

gRPC遠端過程呼叫之golang

gRPC是Google出品,支援多種語言,但是國內安裝會有點問題,下面整理一下,方便今後配環境的複習。 安裝grpc go get google.golang.org/grpc 結果出現瞭如下錯誤: package google.golang.org/grpc

遠端過程呼叫 RPC 及其協議

遠端過程呼叫 簡介 RPC是遠端過程呼叫(Remote Procedure Call)的縮寫形式。SAP系統RPC呼叫的原理其實很簡單,有一些類似於三層構架的C/S系統,第三方的客戶程式通過介面呼叫SAP內部的標準或自定義函式,獲得函式返回的資料進行處理後顯示或列印。

RabbitMQ的學習(四):RPC-遠端過程呼叫(純demo-可直接使用)

前言:在前面三篇文章中,分別對rabbitmq的搭建,並對rabbitmq常用的四種不同的交換機結合路由鍵編寫了各自的demo,可以參考: 1. RabbitMQ的學習(一):Windows下安裝及配置RabbitMQ,erlang環境變數; 2. RabbitMQ的學習(二):簡單的j

服務通訊之遠端過程呼叫(RPI)

背景 您已應用微服務架構模式。服務必須處理來自應用程式客戶端的請求。此外,服務有時必須協作處理這些請求。他們必須使用程序間通訊協議。 解決方案 使用RPI進行服務間通訊。客戶端使用基於請求/回覆的協議向服務發出請求。 例子 RPI技術有很多例子 REST GRP

微服務springcloud—使用訊息中介軟體收集資料

前文是用HTTP直接收集跟蹤資料的,本節來討論如何使用訊息中介軟體收集追蹤資料。相比HTTP的方式來說,使用訊息中介軟體有以下優點: 微服務與Zipkin Server解耦,微服務無需知道Zipkin Server的網路地址。 一些場景下,ZipkinServ

C++ RPC(遠端過程呼叫

目的 最近由於摩爾定律已經不太適用,隨著大資料、計算量不斷增加,導致單機處理能力不能滿足需求,所以需要分散式計算,這就需要RPC(遠端過程呼叫),下面簡單介紹一下這個demo,來自於GitHub上的一個專案 client程式碼 #include <stri

PHP實現遠端過程呼叫RPC

一、初識RPC RPC(Remote Procedure Call)—遠端過程呼叫,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。 二、工作原理 執行時,一次客戶機對伺服器的RPC呼叫,其內部操作大致有如下十步: 1.呼叫客戶端控制代碼;執行傳送引數