2017-03-21 62 views
0

我開發了SAPUI5應用程序並嘗試使用servlet來實現某些服務器端功能。 我從這裏得到了指導tutorial在SAPUI5應用程序中調用Servlet會顯示404錯誤

我使用從SAPUI5控制器到Servlet的JQuery ajax調用,它可以在我的本地開發環境(即Eclipse Neon,localhost)上正常工作。

//Name of servlet is GetUserServlet , mapping defined in web.xml 

$.get('GetUserServlet', { 
          userName : "Hello World" 
         }, function(responseText) { 
          alert(responseText);  
    }); 

這Ajax調用成功調用的servlet(200種狀態),當我在我的本地機器上運行這個從Eclipse中的Hello World的警告。基本上,我捕捉到的servlet參數的userName值,併發送回控制器js文件

string text = request.getParameter("username"); 
response.getWriter().write(text); 

但是,當這個應用程序部署到ABAP服務器的Ajax調用servlet的拋出404(未找到錯誤)所看到的網絡Chrome開發人員工具的控制檯。

是否有人在ABAP上部署了帶有servlet功能的SAPUI5應用程序?

這是否是一些路徑問題?

請指出錯誤原因或提示方向來解決此問題。

回答

4

你在混合一些東西。 UI5應用程序只是一個前端組件,在您的情況下,它與後端JEE應用程序(包含您的servlet)進行通信。我假設您正在本地部署您的servlet + UI5應用程序。一個Tomcat實例(或任何其他Web容器)。您無法將Java應用程序部署到BSP存儲庫。

從SCN鏈接的頁面指的是舊的ABAP BSP功能(現在已經過時; BSP存儲庫僅用於存儲UI5應用程序的靜態文件)。

將JEE應用程序(例如WAR)部署到ABAP後端的唯一方法是後端實際上是ABAP+Java Netweaver installation。說實話,我從來沒有見過這樣的系統在使用。在這種情況下,您甚至不需要使用BSP存儲庫,您可以在服務器的JEE「引擎」內部署JEE後端(servlet以及其他任何東西)和靜態資源(UI5應用程序)。

否則,如果你只有一個簡單的ABAP系統,你有以下幾種可能:

  • 變換你的servlet在ABAP REST Service或者一個Gateway Service(取決於你想要達到的目標)。
  • 將應用程序部署到某個外部Java Web容器或應用程序服務器。通過JCo (RFC)或通過其他一些機制(SOAP,REST等)與ABAP後端進行通信。
  • 將應用程序部署到SAP Cloud Platform並使用SAP Cloud Connector與ABAP後端進行通信。
+0

您好serban,該servlet用於連接到SQL Server並從中檢索數據並顯示在SAPUI5視圖中,您認爲我的方法一定是怎樣的? –

+0

當後端是ABAP時正在使用OData服務,但如何連接到非SAP後端系統?問題是在ABAP服務器上部署,因爲在本地,servlet是從SAPUI5控制器成功調用的,如上面發佈的問題所述? –

+0

正確的meif我在下面的方法是錯誤的 - 我部署SAPUI5應用程序沒有servlet - >我在另一臺機器上安裝TOmCat服務器和它的主機servlet - >從我的SAPUI5控制器js文件,我做POST ajax調用並提供參數給url(servlet) –

1

您得到404的原因是因爲servlet未部署在SAP Server中。 您可以隨時連接到從SAP UI5應用任何Servlet或者REST/Web服務API,但是你將有以下事情要照顧才能夠訪問這些服務:

  • 服務應正確部署在服務器上,如果它是一個 ODATA或Hana服務,那麼它將很容易訪問,因爲它將在 相同的域中,並且可以部署在網關或HANA服務器中。

  • 如果該服務被部署這是一個 不同的域,那麼你需要更新你的 的servelt /服務的響應頭允許跨源接入,否則瀏覽器會 塊,並給跨產地任何其他服務器上不允許錯誤。

的3個主要的反應,你將需要在這種情況下,標題是:

  • 訪問控制允許來源:這可以是一個「*」或逗號分隔域你想允許訪問的名稱。

  • 訪問控制允許的方法:GET,POST等

  • 訪問控制允許報頭:你可以告訴它的頭部,你希望瀏覽器允許跨域服務,例如作爲來源,內容類型,接受;

相關問題