【问题标题】:deploy eHour in Apache Tomcat在 Apache Tomcat 中部署 eHour
【发布时间】:2021-03-17 13:54:52
【问题描述】:

我需要你的帮助,因为我尝试在我的服务器(它是一个 Windows 服务器)上安装 eHour,但没有成功:

documentation 中所述,有两种安装类型:

  • 独立
  • War 文件(文档链接似乎不好,转到旧的安装说明,新的是 here

首先,我尝试了独立方式,但即使 eHour 服务正在运行,我也没有任何网页。
所以我卸载了eHour并尝试使用War文件的方式

因为它是一个新服务器,我安装了 Apache Tomcat(版本 10.0.4)和 mysql 然后,我复制 WAR 发行版并将其解压缩到我的 C 盘(我还将文件夹从 ehour-1.4.3 重命名为 ehour)
然后我创建一个 setevn.bat 文件并创建一个变量 EHOUR_HOME
set EHOUR_HOME="c:\ehour"

然后我下载mysql连接器并将文件mysql-connector-java-8.0.23.jar复制到Tomcat 10.0/lib目录

最后,我将war文件从ehour-1.4.3.war重命名为ehour.war,并复制到Tomcat 10.0/webapps目录

我启动了 apache,并在 Tomcat 10.0/webapps 目录中添加了一个目录 ehour 但是 localhost:8080/ehour 结果是 404 : 请求的资源 [/ehour] 不可用。

我查看了 catalina 日志,但没有发现任何对我有帮助的东西

有什么建议吗?

看来我确实有与 here 相同的错误: 在文件 localhost.log 我确实有类似的错误:

EHOUR_HOME environment variable or context parameter not defined   
nested exception is java.io.FileNotFoundException: ${EHOUR_HOME}\conf\ehour.properties (The system cannot find the path specified)

但是,我确实在 Tomcat/bin 目录中创建了一个文件 setenv.bat 它的内容是:
set EHOUR_HOME="c:\ehour"
我想念什么?

【问题讨论】:

  • Tomcat 10 实现了 Servlet 5.0,它与大多数 Web 应用程序不兼容。检查Servlet 5.0 JAR throws compile error on javax.servlet.* but Servlet 4.0 JAR does not。您应该改用 Tomcat 9.0。
  • 它没有帮助,但我在日志中确实有一些错误:INFO [http-nio-8080-exec-3] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个 JAR已扫描 TLD,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。严重 [http-nio-8080-exec-3] org.apache.catalina.core.StandardContext.startInternal 一个或多个侦听器无法启动。完整的详细信息将在相应的容器日志文件中找到
  • 您应该通过编辑问题来添加日志,而不是在评论中。 “适当的容器日志文件”catalina.<date>.log
  • 查看localhost. <date>.log 了解错误的详细信息。
  • 好的,我在 localhost..log 文件中找到了新日志:似乎 ehour 变量设置不正确

标签: tomcat war


【解决方案1】:

您使用的是 Windows,因此您可能正在使用 Procrun(Commons Daemon/Tomcat Monitor)将 Tomcat 作为 Windows 服务启动。 Procrun 根本不使用*.bat 文件,一切都是通过图形界面prunmgr 配置的(截图见this answer)。

很遗憾你不能通过图形界面配置环境变量,所以要么:

  • 将环境变量全局(适用于所有用户)添加到您的系统中,

  • 或将环境变量添加到 procrun

    • 运行
      Tomcat10.exe update "++Environment=C:\ehour"
      
      Tomcat10.exe 是 procrun 的一个副本,在 Tomcat 安装的bin 目录下),
    • 向 Windows 注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\<service_name>\Parameters 添加一个名为 Environment 的新值,类型为 REG_MULTI_SZ,数据为 EHOUR_HOME=C:\ehour

编辑:EHOUR_HOME 配置参数实际上有三个不同的来源(参见EhourHomeUtilEnvInitListener),按以下顺序查找:

  1. Java 系统属性EHOUR_HOME,您可以在例如配置$CATALINA_BASE/conf/catalina.properties,
  2. 操作系统环境变量EHOUR_HOME,如上所述配置,
  3. servlet上下文初始化参数EHOUR_HOME,可以在appropriate context file中配置:
<Parameter name="EHOUR_HOME" value="/path/to/ehour" />

【讨论】:

  • 完美!我创建了一个 Windows 注册表项。请注意,数据应为EHOUR_HOME=C:/ehour,但读取为 C:ehour
  • EHOUR_HOME=C:\ehour 会将EHOUR_HOME 的值设置为C:\ehour,但程序本身可能会因Windows 文件路径语法的怪癖而窒息。 Java 将C:/ehour/C:/ehour 解释为C:\ehour 的同义词。
猜你喜欢
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2019-09-21
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多