【问题标题】:Tomcat will not start after deploying sakai from source从源代码部署 sakai 后 Tomcat 将无法启动
【发布时间】:2012-05-24 15:29:50
【问题描述】:

我已按照此 URL 中的说明进行操作:http://pmungai.wordpress.com/sakai-developer-guide/sakai-linux-cheatsheet/,并且能够编译和部署 sakai,但是,在重新启动 tomcat 后,它会显示以下内容:

root@ip-10-72-129-39:/opt/sakai# sh /opt/tomcat/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.6.0-openjdk-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar

意味着tomcat启动成功,但是当我尝试从浏览器打开url时,它只是永远加载,等待响应。如果我尝试关闭 tomcat,我会得到:

root@ip-10-72-129-39:/opt/sakai# sh /opt/tomcat/bin/shutdown.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-1.6.0-openjdk-amd64
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar
2012-05-24 15:26:34,357 ERROR main org.apache.catalina.startup.Catalina - Catalina.stop:
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
        at java.net.Socket.connect(Socket.java:546)
        at java.net.Socket.connect(Socket.java:495)
        at java.net.Socket.<init>(Socket.java:392)
        at java.net.Socket.<init>(Socket.java:206)
        at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:395)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:344)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:435)

当 tomcat 开始时没有运行时会发生这种情况。 我能够在部署 sakai 之前测试 tomcat 是否正在运行,但之后,它无法加载网页。

有人知道怎么回事吗?

【问题讨论】:

标签: maven-2 tomcat5.5 openjdk sakai


【解决方案1】:

在开始 sakai 开发环境之前,我建议尝试 sakai 2.8.x 演示,它将提供一个内部数据库并具有一些大多数标准功能。

您应该从以下位置下载演示项目: https://testdrivesakai.com/portal

在您习惯了流程、配置等之后,您应该使用您自己的 sakai 架构设置您自己的实例。但是,当您这样做时,还要确保您至少有一些可用的最低硬件设置以及以下 tomcat 启动参数:

-Xms512m
-Xmx1024m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-XX:NewSize=192m
-XX:MaxNewSize=384m
-Djava.awt.headless=true
-Dhttp.agent=Sakai
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
-Dsun.lang.ClassLoader.allowArraySyntax=true

此外,请确保您加入 sakai-dev 邮件列表,因为您可以通过在那里发布问题获得更快的支持。

加入 sakai 开发者列表的链接: http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

【讨论】:

    【解决方案2】:

    根据我的经验,这通常与数据库相关。您使用的是开箱即​​用的 hsqldb 还是 MySQL?首次启动 Tomcat 时,使用 Maven 编译并部署到您的 tomcat 目录后,它必须自动创建一堆表。在许多情况下,这可能会因为几个原因而失败。

    我假设您使用的是 MySQL,因为 hsqldb 的问题很少:

    • 有时初始的 tomcat 启动会关闭您的 mysqlservice 并且不允许它重新启动。这通常是因为它无法在 my.cnf 文件中指定的位置创建错误日志文件。尝试注释掉正在使用这些日志的任何实例并重新启动服务。然后重试启动。

    • 在 Linux 上使用“# ./catalina.sh run”而不是调用启动 shell 脚本。这将生成第二个终端窗口,并向您显示 Tomcat 尝试启动时发生的所有事情(包括任何错误)。

    • 查看是否在您的数据库中创建了任何表。如果不是,那么它是一个数据库连接问题。如果是这样,您应该有大约 377 个桌子左右,具体取决于 Sakai 版本。

    • 如果您的 tomcat 日志中出现“缓存未激活”错误,则这是已知的竞争条件。您可能需要禁用表自动创建(假设表已经从之前的启动试验中创建)并应用此处列出的补丁:

    KNL-1290

    如果没有可处理的错误消息,就很难诊断您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2016-10-21
      • 2023-03-19
      • 1970-01-01
      • 2023-03-24
      • 2019-05-02
      • 1970-01-01
      相关资源
      最近更新 更多