2014-06-25 33 views
0

我有一个使用maven构建的Spring MVC war文件。 我把它复制到Tomcat的webapps目录下,在localhost上,它完美的工作。本地主机和远程服务器上的war文件部署之间的区别(Tomcat)

我有另一台运行在远程服务器上的tomcat。我复制了同样的战争文件,它给了我404!为什么?

Tomcat的版本略有不同,但我认为这不能解释它。 反正这里是localhost上一个版本:

Server version: Apache Tomcat/7.0.54 Server built: May 19 2014 10:26:15 Server number: 7.0.54.0 OS Name: Linux OS Version: 3.11.10-11-desktop Architecture: amd64 JVM Version: 1.7.0_51-b00 JVM Vendor: Oracle Corporation

版本远程服务器上的一个:

Server version: Apache Tomcat/7.0.53 
Server built: Mar 25 2014 06:20:16 
Server number: 7.0.53.0 
OS Name: NetBSD 
OS Version:  6.1_STABLE 
Architecture: amd64 
JVM Version: 1.7.0-internal-pkgsrc_2014_05_11_23_31-b00 
JVM Vendor:  Oracle Corporation 

所以基本上我不知道是什么导致这种差异。除了在webapps /文件夹下复制war文件,我还需要配置conf/server.xml吗?

UPDATE: 这是我得到的远程服务器上的警告:

No mapping found for HTTP request with URI [/SpringMVCHelloWorld/WEB-INF/pages/helloWorld.jsp] in DispatcherServlet with name 'dispatcher' 

UPDATE这里是调度的servlet。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> 

    <context:component-scan base-package="com.srccodes.spring.controller" /> 
    <mvc:annotation-driven /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
    </beans> 
+0

其路径映射的问题,你可以看到在错误信息中。您无法从网址访问/ WEB-INF /内的文件。此目录只能从您的应用程序访问。 – Stefan

+0

那么如何让这些文件可以访问?我应该如何改变部署的战争以使这些文件可访问? –

+0

该问题已经更新了调度程序servlet的内容。奇怪的是,它在我的localhost-tomcat上工作!它仅在远程服务器上失败。 –

回答

0

我需要将以下片段添加到WEB-INF/web.xml中。因为这些值在远程服务器的conf/web.xml文件中注释掉...

<servlet> 
<servlet-name>jsp</servlet-name> 
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
<init-param> 
    <param-name>fork</param-name> 
    <param-value>false</param-value> 
</init-param> 
<init-param> 
    <param-name>xpoweredBy</param-name> 
    <param-value>false</param-value> 
</init-param> 
<load-on-startup>3</load-on-startup> 

而且这样的:

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jspx</url-pattern> 
</servlet-mapping> 
0

你可以把JSP页面上面WEB-INF目录,即/SpringMVCHelloWorld/pages/helloWorld.jsp,或使用MVC框架来处理内部。 Spring MVC是一个很好的开始。

+0

“,或者使用MVC框架来处理它,Spring MVC是一个很好的开始。”这已经是一个Spring MVC项目。 (用Maven构建) –

+0

好的,请发布spring xyz-servlet.xml。 – Stefan

相关问题