在SAPUI5应用程序中调用Servlet会显示404错误

时间:2017-03-21 10:12:54

标签: java jquery servlets sapui5

我开发了SAPUI5应用程序并尝试使用servlet来实现某些服务器端功能。 我已经从tutorial

获得了指导

我使用从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服务器时,对servlet的Ajax调用会抛出404(未找到错误),如Chrome开发人员工具的网络控制台中所示。

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

这是路径问题吗?

请说明错误原因或提示方向以解决此问题。

2 个答案:

答案 0 :(得分:4)

你正在混合一些东西。 UI5应用程序只是一个前端组件,在您的情况下,它与后端JEE应用程序(包含您的servlet)进行通信。我假设您正在本地部署您的servlet + UI5应用程序,例如Tomcat实例(或任何其他Web容器)。您无法将Java应用程序部署到BSP存储库。

您从SCN链接的页面是指旧的 ABAP BSP功能(现已过时; BSP存储库仅用于存储UI5应用程序的静态文件)。

您可以将JEE应用程序(例如WAR)部署到ABAP后端的唯一方法是后端实际上是ABAP+Java Netweaver installation。说实话,我从未亲眼见过这样的系统。在这种情况下,您甚至不需要使用BSP存储库,您可以在服务器的JEE“Engine”内部署JEE后端(servlet以及其他任何内容)和静态资源(UI5应用程序)。 p>

否则,如果您只有一个简单的ABAP系统,您有以下可能性:

  • 将您的Servlet转换为ABAP REST ServiceGateway Service(取决于您希望实现的目标)。
  • 将应用程序部署到某个外部Java Web容器或应用程序服务器。通过JCo (RFC)或通过其他一些机制(SOAP,REST等)与ABAP后端进行通信。
  • 将应用程序部署到SAP Cloud Platform,并使用SAP Cloud Connector与ABAP后端通信。

答案 1 :(得分:1)

您获得404的原因是因为Servlet未部署在SAP Server中。 您始终可以从SAP UI5应用程序连接到任何Servlet或REST / Web服务API,但您可以使用以下内容来处理这些服务:

  • 应该在服务器上正确部署服务(如果是a) 然后ODATA或Hana服务将很容易访问 相同的域,可以部署在Gateway或HANA服务器中。

  • 如果服务部署在a中的任何其他服务器上 不同的域然后你需要更新你的响应头 servelt / service允许Cross Origin访问,否则浏览器将 阻止它并给出Cross Origin不允许的错误。

在这种情况下,您需要的3个主要响应标头是:

  • Access-Control-Allow-Origin :这可以是您要允许访问的“*”或逗号分隔的域名。

  • 访问控制 - 允许 - 方法:GET,POST等

  • Access-Control-Allow-Headers :您可以告诉浏览器在跨域服务中允许哪个标头,例如Origin,Content-Type,Accept;