Tomcat:每个应用程序

时间:2015-10-11 21:44:07

标签: java spring maven tomcat http-status-code-404

我的Tomcat上部署的每个应用程序都会在我发出的每个请求中返回status code 404。我尝试了几个项目,helloworlds或者骷髅,每个项目的行为与其他项目相同:

enter image description here

我使用过的一些项目:

https://github.com/mwarman/skeleton-ws-spring-boot

https://spring.io/guides/gs/rest-service/(我可以使用mvn spring-boot:run运行它,但它不能像部署到Tomcat那样工作)

https://github.com/shagstrom/spring-mvc-hibernate-skeleton

我正在使用最新的Tomcat8 (8.0.27)Oracle JDK 8。我还尝试Tomcat7OpenJDK 7。 使用的Tomcats正在 MAC Debian 上运行。 我通过 mvn Intellij Idea 构建应用。

Tomcats很干净,没有更改配置(除了添加manager-gui用户)。

由于我尝试了很多不同的项目,我不相信代码中存在问题。它是在Tomcat的配置中吗?我怎样才能让它发挥作用?

修改 server.xml代码:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

2 个答案:

答案 0 :(得分:0)

如果您成功安装了tomcat,您可能已经从浏览器http://localhost:8080/ URL看到了tomcat主页。 (否则,您需要先检查tomcat安装。)

我猜你可能已经通过在你提到的网站上方进行了操作而建造了jar。 我想知道你是否将jar应用到你的tomcat中,因为你提到了来自任何其他项目的相同结果。 你需要在你的tomcat中应用jar或war才能应用java程序。

以下是我希望它们可能对您有所帮助的链接。

包装大战:How to make war file in Eclipse

Tomcat - war文件部署:https://www.youtube.com/watch?v=9X9DA8oVodk

答案 1 :(得分:0)

tomcat的返回404响应,您必须检查以下几点:

  • 检查您的部署是否正确
  • 检查war bootstratp及其ServletContext初始化是否没有错误。
  • 检查您调用的资源是否成功公开。

要测试这些问题,您必须公开:

  • 静态资源测试
  • 网络服务资源测试

通过这种方式,您可以排除在应用程序部署期间可能遇到的陷阱