如何在tomcat上部署polymer-starter-kit

时间:2017-01-03 18:44:32

标签: tomcat polymer polymer-starter-kit

我已经为聚合物安装了所有必需的包装。

我下载了Polymer-starter-kit并构建它。

如果我开始polymer serve,我可以获得类似以下内容的页面:

enter image description here

但是,如果我将我的聚合物应用程序目录下的文件夹/build/bundled复制到/path/to/tomcat/webapps,我获得的页面只有grep背景,仅此而已。

enter image description here

我想知道如何在tomcat上正确部署聚合物应用程序。

如果我只是build一种非常简单的聚合物,只有一种元素而不是聚合物 - 起始剂 - 套件,将/build/bundled复制到/path/to/tomcat/webapps后,页面可以正确显示

enter image description here

3 个答案:

答案 0 :(得分:2)

至于聚合物问题

将Polymer配置为在这些基于Java Servlet的Web服务器上正常工作有时会非常棘手。对于初学者来说,打开开发工具来查看您收到的错误类型,可能您会看到一些不应该过于难以解决的失败导入。

这是使用servlet容器管理基于非servlet的应用程序的缺点。不要气馁可以做到,我们在Tomcat服务器上有几个应用程序正在生产中。

您可能不得不将polymer serve抛出此项目的窗口,并设置本地Tomcat服务器来进行开发。因为这些行为完全不同。

要记住的事情

不确定您对项目的总体目标是什么,或者您需要对Tomcat环境进行多少调整(我认为这将是一个生产目标。)您将希望直接从头开始使用基于散列的路由。这些servlet容器将寻找用于处理URL的Java类。

答案 1 :(得分:2)

我能够在ROOT上下文中将聚合物starter-kit应用程序部署到Tomcat,以便可以成功解决所有依赖关系。

只需运行polymer build并复制\build\bundled%TOMCAT_HOME%\webapps\ROOT文件夹的内容,然后启动Tomcat即可。

答案 2 :(得分:2)

感谢ynov's answer。它有帮助和有效。但它并不那么优雅。

有关here的另一个解决方法Deploying my application at the root in Tomcat:在conf/server.xml中配置上下文根以使用您的应用:

<Context path="" docBase="polymer" debug="0" reloadable="true"></Context>

但是,如Apache Tomcat 7 Configuration Reference - The Context Container中所述:

  

建议不要将元素直接放在server.xml文件中。这是因为它使得修改Context配置更具侵入性,因为在不重新启动Tomcat的情况下无法重新加载主conf / server.xml文件。

聚合物 - 启动子 - 套件的实际问题无法正确部署,因为Tomcat上的webapp仍保留在聚合物 - 启动器 - 套件源代码中。 网站显示不正确是因为资源(htmls,图片,组件等)没有正确引用。

polymer-starter-kit/index.html的原始代码中,资源的链接如下:

...

<!-- Homescreen icons -->
<link rel="apple-touch-icon" href="/images/manifest/icon-48x48.png">
<link rel="apple-touch-icon" sizes="72x72" href="/images/manifest/icon-72x72.png">
<link rel="apple-touch-icon" sizes="96x96" href="/images/manifest/icon-96x96.png">
<link rel="apple-touch-icon" sizes="144x144" href="/images/manifest/icon-144x144.png">
<link rel="apple-touch-icon" sizes="192x192" href="/images/manifest/icon-192x192.png">

...

但是,如果您将webapp部署在$TOMCAT/webapps/这样的子目录$TOMCAT/webapps/polymer中,则href="/images/manifest/icon-48x48.png"之类的链接引用将无法正常工作,因为它引用了根目录。这就是之前的解决方法(即将webapp放在$TOMCAT/webapps/ROOT)工作的原因。因此,诀窍是将链接更改为href="images/manifest/icon-48x48.png"(或任何其他适合您想要使用的资源的正确路径的正确路径。)。

例如,在polymer-starter-kit/index.html

...

<!-- Homescreen icons -->
<link rel="apple-touch-icon" href="images/manifest/icon-48x48.png">
<link rel="apple-touch-icon" sizes="72x72" href="images/manifest/icon-72x72.png">
<link rel="apple-touch-icon" sizes="96x96" href="images/manifest/icon-96x96.png">
<link rel="apple-touch-icon" sizes="144x144" href="images/manifest/icon-144x144.png">
<link rel="apple-touch-icon" sizes="192x192" href="images/manifest/icon-192x192.png">

...

因为images/index.html位于同一目录下。