2013-02-26 123 views
2

我想用PostgreSQL數據庫和使用Hibernate的H2數據庫引擎構建Java應用程序的Ruby on Rails Web應用程序。將Java桌面應用程序與Ruby on Rails Web應用程序連接

我聽說過JDBC,RMI和套接字,但我對這些沒有任何瞭解。

問題是,我想使用來自Web應用程序的數據,使用本地數據庫做一些處理,最後我想將更改上傳到數據庫或者讓我們說我想創建新表在網絡數據庫中,並立即顯示網絡中的變化。

例如,我想讓學生在網上註冊,讓學生從網絡數據庫中滾動到本地數據庫並輸入標記,最後我希望能夠在網絡數據庫和網絡中添加標記個人商標應該立即發佈。

如果有人能幫助我,我將不勝感激。

回答

2

問題的解決方案是(REST)API。

我會建議爲你的API創建單獨的控制器,一個API下/ V [number_of_version]/

有一個在http://railscasts.org對此處建立一個REST API一個很好的例子,由Ryan貝茨。

您可以在這裏找到API的代碼示例。

https://github.com/railscasts/350-rest-api-versioning/tree/master/store-after/app/controllers/api

然後你就可以獲取與HTTP請求數據。

例如。 ,爲您的應用程序,你會做的URL的HTTP請求(你將在API和版本命名空間下你的routes.rb定義)的用戶獲取數據/:用戶名

http://yourdomain.com/ausername

和你將有一個像

JSON響應
user: { 
    username: "ausername" 
    email: "[email protected]" 
..... 

不要猶豫,問我,如果你有任何疑問:)

更新問題

當然你可以用這種方式添加數據。你只需要將正確的json導出到正確的url。

我在這個程序做了一個例子

https://github.com/Geembo/getshitdone

的例子:

https://github.com/Geembo/getshitdone/blob/master/app/controllers/tasks_controller.rb

在這個應用程序,我通過JavaScript(骨幹)保存的任務。同樣的規則適用於Java(和任何其他語言)

+0

我可以使用Java應用程序中的這些方法添加數據並創建新表嗎? – sushilthe 2013-02-28 02:27:55

+0

更新了答案! – 2013-02-28 12:39:44

+0

感謝您的更新 – sushilthe 2013-03-01 18:06:05

0

處理此問題的最佳方法是從外部應用程序可與之交互的Web應用程序提供一個API。關於Rails的一件好事是它基本上支持這個開箱即用的功能。

從網絡上查看學生的典型控制器操作。

class StudentsController < ApplicationController 
    def show 
    @student = Student.find(params[:id]) 
    end 
end 

當請求被以/students/1students/show模板將被渲染爲學員ID#1製成。

Rails能夠將xml/json附加到URL的末尾,以請求使用不同格式類型的處理。

class StudentsController < ApplicationController 
    respond_to :html, :json 

    def show 
    @student = Student.find(params[:id]) 
    respond_with(@student) 
    end 
end 

這設置了ActionController的一個功能,叫做Responder。現在,當對/students/1.json發出請求時,控制器將在Student模型上調用as_json,該模型默認採用所有模型屬性並將其轉換爲json對象。這可以通過在學生模型中重寫as_json來定製。

要進行更新,您可以按照類似的模式。您使用PUT請求向/students/1.json提交服務器。請求不在JSON中,您使用的庫可能支持設置變量,確保它是Rails預期的格式(即student[field])。 Rails中間件將負責其餘部分。

class StudentsController < ApplicationController 
    respond_to :html, :json 

    def update 
    @student = Student.find(params[:id]) 
    @student.update_attributes(params[:student]) 
    respond_with(@student) 
    end 
end 

注意與響應者沒有檢查,如果工作的update_attributes的respond_with會爲你做的。如果出現錯誤,您將得到一個HTTP 422 Unprocessable Entity作爲響應代碼,並且響應的主體將是一個帶有錯誤的JSON對象。

還值得一提的是,如果您更喜歡XML響應體而不是JSON,則可以用jsonxml代替所有這些示例。

+0

這是否意味着我只能編輯,更新和刪除現有數據。我可以使用這些方法創建一個新表嗎? – sushilthe 2013-02-28 02:29:16

+0

新桌子?不,您可以使用現有模型創建新記錄,如果這就是您的意思。 – Cluster 2013-02-28 03:31:52

+0

好的。新紀錄會好起來的。謝謝 – sushilthe 2013-02-28 12:30:29

相關問題