亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JRuby開發Web Service

發布時間:2021-11-03 13:40:58 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關如何使用JRuby開發Web Service的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

首先,用JRuby開發Web Service,需要安裝ActionWebService,由于rails2.0后的版本已經去掉了ActionWebService,所以現在官網不再更新ActionWebService,所以要正常的開發,就必須安裝datanoise-actionwebservice,安裝方法

gem install datanoise-actionwebservice -v='2.2.2' –source http://gems.github.com

之后,在config/environment.rb文件中添加下面這段話

config.gem 'datanoise-actionwebservice', :lib => 'actionwebservice', :version => '2.2.2'

其中版本"2.2.2"是根據所用的rails版本來的,我用的rails版本是2.2.2的。

隨后,在命令提示行中鍵入 "gem list",看datanoise-actionwebservice 2.2.2是否安裝成功。

如果安裝成功,現在就可以開發部署我們的Web Service了。以下是JRuby開發Web Service全過程:

一、Jruby調用Web Service

require 'soap/wsdlDriver' class ProjectController <  ApplicationController    def project      wsdlLink = 'http://192.168.1.5:7001/bpm?WSDL';      soap_client = SOAP::WSDLDriverFactory.new(wsdlLink).create_rpc_driver      @result = soap_client.startSession("eric","eric");    end end

首先從標準庫載入soap/wsdlDriver,定義一個wsdl文件的URL,然后通過該URL創建一個由WSDL描述的Web service的對象,之后就可以調用webservice中定義的方法startSession(name, password)。

二、Jruby部署Web Service

首先建立一個名為”test_api.rb的文件”,其內容如下:

class TestApi <  ActionWebService::API::Base    api_method :getMessage,                :expects => [{:msg=>:string}],                :returns => [:string]   end

其次,在app/controller下建立一個名為test_server_controller.rb,其內容如下:

require “路徑名/test_api”  class TestServerController <  ActionController::Base    web_service_api TestApi    web_service_dispatching_mode :direct   wsdl_service_name "test"    def getMessage(msg)        return “The server return ”+msg;    end  end

注意:這里是JRuby開發Web Service的重點,普通的controller會繼承自ApplicationController,但是用于發布Web Service的controller必須要繼承ActionController::Base(網上很多例子都是繼承的ApplicationController,開始學習的時候總不知道是什么原因導致發布不成功,仔細對比才發現是controller繼承了錯誤的類)。

做到這里,我們已經成功的發布了一個很簡單的Web Service,打開服務器,在瀏覽器中通過http://127.0.0.1:3000/test_server/wsdl去看wsdl文檔吧。

在test_api.rb文件中,api_method :getMessage 定義的是要發布的Web Service中的方法名

:expects => [{:msg=>:string}] 這表示你定義的方法中,有一個叫msg的參數,并且這個參數的類型是String,如果有兩個參數一個是Sting,一個是int可以這樣寫expectx => [{:one_parameter=>:string},{:two_parameter=>:int}]

在expects中的類型不能使用ActiveRecord::Base的子類,也就是說expects中不能使用創建的model對象作為參數類型,下面這樣子使用是錯誤的

錯誤案例:

app/models/project.rb   class Project <  ActiveRecord::Base   end  test_api.rb   require “路徑/project”   class TestApi <  ActionWebService::API::Base   api_method :saveProject,    :expects => [{:project=>Project}],    :returns => [:boolean]   end

這樣定義,瀏覽wsdl時會出現這樣的錯誤提示:“ActiveRecord model classes not allowed in :expects”

expects不支持ActiveRecord作為傳入參數,但我們可以自己寫一個struct,如下:

project_struct.rb   class ProjectStruct < ActionWebService::Struct       member :name,    :string      member :date,     :date      member :status,    :int  end

此時,上述test_api.rb文件就可以改成下面這樣:

test_api.rb

require “路徑/project_struct”   class TestApi <  ActionWebService::API::Base     api_method :saveProject,                :expects => [{:project=>ProjectStruct}],                :returns => [:boolean]   end

:returns => [:string] 表示該方法返回值的類型,這里可以直接用ActiveRecord model作為返回類型

忽略 :expects 表示調用該方法不需要傳入參數

忽略 :returns 表示該方法沒有返回值

感謝各位的閱讀!關于“如何使用JRuby開發Web Service”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰镇市| 庆元县| 绥化市| 石狮市| 上饶县| 宁化县| 保德县| 台湾省| 谢通门县| 彭山县| 桂平市| 上犹县| 斗六市| 旬邑县| 嘉荫县| 平塘县| 乳山市| 达州市| 科技| 项城市| 墨竹工卡县| 高唐县| 浪卡子县| 东丰县| 福建省| 临沭县| 金乡县| 府谷县| 洛川县| 新安县| 沭阳县| 平陆县| 剑河县| 茌平县| 静海县| 哈巴河县| 合阳县| 福贡县| 阳新县| 舒兰市| 建水县|