当前位置: 首页 > 知识库问答 >
问题:

在Google Appengine服务器上使用Polymer应用进行路由

施德运
2023-03-14

我在谷歌Appengine服务器上遇到了一个问题,没有找到任何解决方案,也许有人能帮我。

我用他自己的路由器开发了一个聚合物应用程序,所以所有的路由都是在客户端完成的。刷新页面时,请求由服务器处理,由于没有路由匹配,因此无法正常工作。

为了解决它我已经在web.xml文件中设置了我想要始终服务于index.html文件Whitout照顾url,请参阅下面的代码:

<!-- Always serve the index.html file if url is not defined in web.xml (It's polymer router, which will manage routing) -->
<servlet>
    <servlet-name>app</servlet-name>
    <jsp-file>/index.html</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>


<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

这在本地环境中可以正常工作,但当我在生产环境中部署时,出现了以下错误:

java.lang.IllegalStateException:index.html没有强制路径servlet

我一直在寻找解决方案,但我什么都没找到,如果有人有主意,我就接受!

祝您有个美好的一天!

共有1个答案

秦滨海
2023-03-14

这与聚合物无关。你需要专注于步态错误。

java.lang.IllegalStateException:index.html没有强制路径servlet

你能试试这个吗?没有xxx的强制路径servlet。jsp

如果它不起作用,您可以创建一个servlet来转发请求。例如。

代替

<jsp-file>/index.html</jsp-file>

使用servlet

<servlet-class>your.package.YourServlet</servlet-class>

覆盖doGet在your.package.YourServlet

getServletContext().getRequestDispatcher("/index.html").forward(req, res);

另见https://issuetracker.google.com/issues/35884280#comment7和https://issuetracker.google.com/issues/35884280#comment8

 类似资料:
  • 我开发了一个服务于rest服务的独立spring boot应用程序,我把它打包成了一个< code>jar,它运行正常。为了在生产服务器(Websphere)上发布它,我必须将它转换成一个< code>war。 我已经更新了我的<code>pom。xml添加以下行: 然后,我启动了,我得到了。因此,在Tomcat服务器上发布它可以正常工作,但在Liberty上我收到了错误: 我还修改了我的入口点,

  • 问题内容: 我有以下代码,在部署到测试服务器之前,它工作正常: 问题是我已部署到虚拟目录,并且下面的调用试图从服务器根目录访问GetUserList。这是有道理的,而且我知道许多解决方法。 我想知道的是一种 正确的 方式,该方式以可移植且可在Angular中维护的方式引用服务URL。 问题答案: 我建议在头部使用HTML基本标记,并对与此相关的所有路径进行编码。例如,在ASP.NET中,您可以获取

  • 这里有一些在服务器运行 WSGI 应用的方式。当你正在开发一个应用,你往往不想在一个成 熟服务器上部署和运行,取而代之的是一个轻量服务器。 Werkzeug 就内置了这样一个轻量 的服务器。 在一个服务器上运行 start-myproject.py 最简单的方法如下示例: #!/usr/bin/env python # -*- coding: utf-8 -*- from werkzeug.se

  • 问题内容: 对于需要快速刷新数据的应用程序,使用JavaScript轮询服务器的最佳实践是什么?我将jQuery用于前端,将Java Spring Framework用于后端。 刷新数据的示例可以是很快(每1秒)更新一次的项目列表。 问题答案: 您可能想使用jQuery的Ajax函数每秒钟左右轮询一次服务器。然后,服务器可以近乎实时地向浏览器发出指令响应。 您也可以考虑使用长轮询而不是上面的方法,

  • 问题内容: 我正在尝试学习AngularJS。我第一次尝试每秒钟获取新数据的工作: 当我通过使线程休眠5秒钟来模拟慢速服务器时,它将等待响应,然后再更新UI和设置另一个超时。问题是当我重写以上内容以使用Angular模块和DI进行模块创建时: 这仅在服务器响应速度很快时才有效。如果有任何延迟,它会在不等待响应的情况下每秒发出1个请求,并且似乎清除了UI。我想我需要使用回调函数。我试过了: 但是出现

  • 我在Azure中设置了两个应用程序服务。”父级和子级都公开APIendpoint。 子节点有endpointGet。 父节点有endpoint“获取”和“获取儿童”(使用HttpClient在儿童上调用“获取”)。 我希望所有子endpoint都需要通过托管身份和AAD进行身份验证,并且我希望所有父endpoint都允许匿名。但是在Azure中,我希望将父应用服务设置为具有调用子应用服务的权限。因