如何在 tomcat 上部署 polymer-starter-kit
how to deploy polymer-starter-kit on tomcat
我已经安装了 Polymer 所需的所有软件包。
我下载了 polymer-starter-kit 并构建了它。
如果我开始polymer serve
,我可以获得类似如下的页面:
但是,如果我将我的polymer app目录下的文件夹/build/bundled
复制到/path/to/tomcat/webapps
的地方,我得到的页面只是grep背景,仅此而已。
我想知道如何在 tomcat 上正确部署 Polymer 应用程序。
如果我只是 build
一个非常非常简单的聚合物,只有一个元素而不是 polymer-starter-kit,在将 /build/bundled
复制到 /path/to/tomcat/webapps
之后,页面可以是正确显示。
关于聚合物问题
配置 Polymer 以在这些 Java 基于 Servlet 的 Web 服务器上正常工作有时可能有点棘手。对于初学者,打开开发工具以查看您收到的错误类型,您可能会看到一些失败的导入,这些导入应该不会太难解决。
这是使用 servlet 容器管理非基于 servlet 的应用程序的缺点。不要气馁,这是可以做到的,我们在 Tomcat 服务器上有几个应用程序正在生产中。
您可能需要为该项目放弃 polymer serve
window 并设置本地 Tomcat 服务器来进行开发。因为它们的行为完全不同。
注意事项
不确定项目的总体目标是什么,或者您必须对 Tomcat 环境进行调整的可用性有多大(我认为这将是生产目标。)您将希望使用基于哈希的从一开始就直接路由。这些 servlet 容器将寻找 Java 类 来处理 URL(s).
我能够在 ROOT 上下文下将聚合物 starter-kit
应用程序部署到 Tomcat,以便可以成功解决所有依赖项。
只需 运行 polymer build
并复制 \build\bundled
文件夹中的内容到 %TOMCAT_HOME%\webapps\ROOT
下,然后启动 Tomcat 就可以了。
感谢 。它有帮助并且有效。但是就没那么优雅了。
另一种解决方法已说明 here regarding 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中所述:
It is NOT recommended to place elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.
polymer-starter-kit 无法正确部署的实际问题,因为 Tomcat 上的 webapp 保留在 polymer-starter-kit 源代码中。 网站未正确显示是因为资源(html、图像、组件等...)未正确引用。
在 polymer-starter-kit/index.html 的原始代码中,资源 link 如下所示:
...
<!-- 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/polymer
这样的子目录 $TOMCAT/webapps/
中,像 href="/images/manifest/icon-48x48.png"
这样的 link 引用将不起作用,因为它指的是根目录。这就是之前的解决方法(即,将 webapp 置于 $TOMCAT/webapps/ROOT
)起作用的原因。因此,诀窍是将 link 更改为 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
在同一目录下。
我已经安装了 Polymer 所需的所有软件包。
我下载了 polymer-starter-kit 并构建了它。
如果我开始polymer serve
,我可以获得类似如下的页面:
但是,如果我将我的polymer app目录下的文件夹/build/bundled
复制到/path/to/tomcat/webapps
的地方,我得到的页面只是grep背景,仅此而已。
我想知道如何在 tomcat 上正确部署 Polymer 应用程序。
如果我只是 build
一个非常非常简单的聚合物,只有一个元素而不是 polymer-starter-kit,在将 /build/bundled
复制到 /path/to/tomcat/webapps
之后,页面可以是正确显示。
关于聚合物问题
配置 Polymer 以在这些 Java 基于 Servlet 的 Web 服务器上正常工作有时可能有点棘手。对于初学者,打开开发工具以查看您收到的错误类型,您可能会看到一些失败的导入,这些导入应该不会太难解决。
这是使用 servlet 容器管理非基于 servlet 的应用程序的缺点。不要气馁,这是可以做到的,我们在 Tomcat 服务器上有几个应用程序正在生产中。
您可能需要为该项目放弃 polymer serve
window 并设置本地 Tomcat 服务器来进行开发。因为它们的行为完全不同。
注意事项
不确定项目的总体目标是什么,或者您必须对 Tomcat 环境进行调整的可用性有多大(我认为这将是生产目标。)您将希望使用基于哈希的从一开始就直接路由。这些 servlet 容器将寻找 Java 类 来处理 URL(s).
我能够在 ROOT 上下文下将聚合物 starter-kit
应用程序部署到 Tomcat,以便可以成功解决所有依赖项。
只需 运行 polymer build
并复制 \build\bundled
文件夹中的内容到 %TOMCAT_HOME%\webapps\ROOT
下,然后启动 Tomcat 就可以了。
感谢
另一种解决方法已说明 here regarding 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中所述:
It is NOT recommended to place elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.
polymer-starter-kit 无法正确部署的实际问题,因为 Tomcat 上的 webapp 保留在 polymer-starter-kit 源代码中。 网站未正确显示是因为资源(html、图像、组件等...)未正确引用。
在 polymer-starter-kit/index.html 的原始代码中,资源 link 如下所示:
...
<!-- 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/polymer
这样的子目录 $TOMCAT/webapps/
中,像 href="/images/manifest/icon-48x48.png"
这样的 link 引用将不起作用,因为它指的是根目录。这就是之前的解决方法(即,将 webapp 置于 $TOMCAT/webapps/ROOT
)起作用的原因。因此,诀窍是将 link 更改为 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
在同一目录下。