我开发了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应用程序?
这是路径问题吗?
请说明错误原因或提示方向以解决此问题。
答案 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系统,您有以下可能性:
答案 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;