我開發了一個基於struts2.2.1的Web應用程序,使用Eclipse的indigo IDE與Apache-tomcat-7.0.28。爲了使它在沒有IDE的情況下工作,我已經在Eclipse IDE中使用它:右鍵單擊項目 - >導出 - >戰爭。struts2 web應用程序不工作在tomcat7 susus linux
因此,我得到了一個war文件,我可以使它在任何安裝了apache-tomcat-7.0.28的windows服務器上工作,只需將war文件複製到tomcat的webapps文件夾並運行surver即可。這裏的每件事情都很好。
但是,當我把這個相同的war文件放到安裝了相同apache-tomcat-7.0.28的Linux服務器上時,它無法打開web.xml中指定的jsp文件事件並顯示錯誤404頁面。
我甚至嘗試在不同的Linux機器上(如Ubuntu),但它不工作,我得到相同的404錯誤。
爲什麼這樣呢? UPDATE
:
它採取這種形式catalina.out的文件中日誌文件夾和內部
Jul 17, 2012 9:35:55 AM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/ai]
Jul 17, 2012 9:36:55 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/apache-tomcat-7.0.28/webapps/ai.war
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Jul 17, 2012 9:36:56 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).
log4j:WARN Please initialize the log4j system properly.
Jul 17, 2012 9:36:56 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jul 17, 2012 9:36:56 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/ai] startup failed due to previous errors
Jul 17, 2012 9:36:56 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/ai] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [[email protected]]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@970110]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Jul 17, 2012 9:36:56 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/ai] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [[email protected]]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@36d036]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Jul 17, 2012 9:38:46 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/GeneTest
Jul 17, 2012 10:21:48 AM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/ai]
Jul 17, 2012 10:22:38 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/apache-tomcat-7.0.28/webapps/ai.war
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
Jul 17, 2012 10:22:39 AM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).
log4j:WARN Please initialize the log4j system properly.
Jul 17, 2012 10:22:39 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jul 17, 2012 10:22:39 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/ai] startup failed due to previous errors
Jul 17, 2012 10:22:39 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/ai] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [[email protected]]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@fadb88]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Jul 17, 2012 10:22:39 AM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/ai] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [[email protected]]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@57f389]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ai</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
UPDATE:後升級形式struts2.2.1到struts2.3.4
Jul 18, 2012 10:38:20 AM org.apache.catalina.core.StandardServer await
INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jul 18, 2012 10:38:20 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
Jul 18, 2012 10:38:20 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
Jul 18, 2012 10:38:25 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib64/jvm/jdk1.6.0_22/jre/lib/i386/server:/usr/lib64/jvm/jdk1.6.0_22/jre/lib/i386:/usr/lib64/jvm/jdk1.6.0_22/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
Jul 18, 2012 10:38:25 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jul 18, 2012 10:38:25 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jul 18, 2012 10:38:25 AM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
java.net.BindException: Address already in use <null>:8009
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:423)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:974)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:141)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
... 16 more
Jul 18, 2012 10:38:25 AM org.apache.catalina.core.StandardService initInternal
SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:624)
at org.apache.catalina.startup.Catalina.load(Catalina.java:649)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:976)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more
Caused by: java.net.BindException: Address already in use <null>:8009
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:406)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:423)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:974)
... 13 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:141)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:393)
... 16 more
Jul 18, 2012 10:38:25 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 544 ms
Jul 18, 2012 10:38:25 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 18, 2012 10:38:25 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.28
Jul 18, 2012 10:38:25 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/apache-tomcat-7.0.28/webapps/ai3.war
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-default.xml]
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts-plugin.xml]
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Parsing configuration file [struts.xml]
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.ObjectFactory)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.FileManager)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.conversion.impl.XWorkConverter)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.TextProvider)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.ActionProxyFactory)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.conversion.ObjectTypeDeterminer)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (org.apache.struts2.dispatcher.mapper.ActionMapper)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (jakarta) for (org.apache.struts2.dispatcher.multipart.MultiPartRequest)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (org.apache.struts2.views.freemarker.FreemarkerManager)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (org.apache.struts2.components.UrlRenderer)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.validator.ActionValidatorManager)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.util.ValueStackFactory)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionProvider)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.util.reflection.ReflectionContextFactory)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.util.PatternMatcher)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (org.apache.struts2.dispatcher.StaticContentLoader)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (com.opensymphony.xwork2.UnknownHandlerManager)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Choosing bean (struts) for (org.apache.struts2.views.util.UrlHelper)
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Overriding property struts.i18n.reload - old value: false new value: true
Jul 18, 2012 10:38:27 AM com.opensymphony.xwork2.util.logging.jdk.JdkLogger info
INFO: Overriding property struts.configuration.xml.reload - old value: false new value: true
Jul 18, 2012 10:38:27 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error filterStart
Jul 18, 2012 10:38:27 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/ai3] startup failed due to previous errors
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/ROOT
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/docs
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/examples
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/host-manager
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/manager
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/apache-tomcat-7.0.28/webapps/GeneTest
Jul 18, 2012 10:38:27 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 18, 2012 10:38:27 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2106 ms
404錯誤只是應用程序未加載的信號,但其原因可能是許多事情之一。嘗試在Tomcat日誌文件中查找更多信息。 – madth3 2012-07-17 05:33:39
但它在Windows Server中的工作原理是什麼? – 2012-07-17 05:50:22
即使Java幾乎能夠承諾在不同的系統上運行相同的應用程序,Web應用程序可以依賴許多外部事物,如Tomcat配置,數據庫,安全等。 – madth3 2012-07-17 06:20:51