2014-04-08 19 views
1

我目前正在運行一個LAMP系統(Linux Apache MySQL PHP)。我有一個數據表存儲在MySQL數據庫中。我需要將此表發送給R(R project),該R目前已安裝並在Apache上運行。然後我需要發送一個長的字符串公式給R,它將用於對來自MySQL的數據運行模型(線性迴歸)。從那裏,我需要將模型的摘要從R返回給MySQL。在LAMP系統上與R(R項目),MySQL和Java進行通信的最有效方式是什麼?

使用以下某種方法會有好處嗎?

  • 的Java servlet在網頁上的Apache Tomcat運行
  • 的Java servlet
  • 的Java Bean

是否有更好的包使用我的情況運行?我已閱讀並通讀了關於RserveJRIrjava的文檔。但是,我無法破譯哪個軟件包更適合我的任務。使用Rserve並在網頁上運行一個servlet

測試例:

RServeExample1.java:

import org.rosuda.REngine.REXP; 
import org.rosuda.REngine.REXPMismatchException; 
import org.rosuda.REngine.Rserve.RConnection; 
import org.rosuda.REngine.Rserve.RserveException; 

public class RServeExample1 { 

public static void main(String[] args) throws RserveException, REXPMismatchException { 
    RConnection c = new RConnection(); 
    REXP x = c.eval("R.version.string"); 
    System.out.println(x.asString()); 
} 
} 

編譯後的文件,我上傳的.class文件到服務器,並在下面添加HTML:

<APPLET CODE=RServeExample1.class WIDTH="150" HEIGHT="25"></applet> 

當網頁打開時,會產生一個java應用程序錯誤 - RuntimeException。

java.lang.reflect.InvocationTargetException 

我是否以錯誤的方式執行此操作?

回答

2

要麼要麼JRI會工作。關鍵的區別在於Rserve將R邏輯與應用程序的其餘部分分開,而JRI將其包含在應用程序中。我認爲前者對你的設置是更好的選擇,但找出最好的方法是測試你的應用程序將運行的各種場景並比較它們的性能。

+0

好的。用Java實現Rserve連接的最佳方式是什麼?我試圖在更新的問題中實現上面列出的簡單Rserve示例。在Apache或java bean中實現servlet會更好嗎? – user2932733

+0

如果資源允許,前者儘管在單獨的機器上將是最好的。 –

相關問題