精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

如何使用JRuby開發WebService

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

創新互聯從2013年創立,先為東陽等服務建站,東陽等地企業,進行企業商務咨詢服務。為東陽企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

首先,用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”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


文章名稱:如何使用JRuby開發WebService
文章路徑:http://m.jcarcd.cn/article/igigsc.html
主站蜘蛛池模板: 国产精品国语 | 九九视频| 日本高清www | 日本三级韩国三 | 国产亚洲首页 | 国产淫秽绿帽视频 | 午夜国产精品国产 | 97日韩在线播放 | 国产剧情一区二区 | 精品e本大 | 日本免码va在| 国产最新进 | 国产剧情传媒大片 | 国产欧美在线高清 | 欧美综合在线观看 | 日本女优 | 欧美另类video | 国产欧美二区三 | 欧美三级在线视频 | 韩国日本一区二区 | 日本网站成人直播 | 蜜桃成熟| 国产成a人| 日韩欧美国产师 | 日本网站免费观看 | 国产在线视频不 | 91日本免费高清 | 欧美日韩精品网 | 国产乱理伦片在 | 国产乱伦精品 | 欧美性爱播放器 | 97超级碰| 日本3d成人动漫 | 国产精品自在拍在 | 成人午夜免费无.码 | 国产九九精品视频 | 日韩欧美一区二 | 国内在线第一区 | 美腿丝袜在线播放 | 97视频免费观看 | 中文字幕综 |