我正在尝试使用带有Maven的Spring Webapp
mvn tomcat:run
命令,但是每当我导航到时http://localhost:8080/myApp,都会出现错误:“请求的资源()不可用”。日志中没有任何内容。我认为我的应用程序应该部署到“ /”而不是“ / myApp”。有没有办法做到这一点?
http://localhost:8080/myApp
Maven输出日志:
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'tomcat'. [INFO] ------------------------------------------------------------------------ [INFO] Building myApp [INFO] task-segment: [tomcat:run] [INFO] ------------------------------------------------------------------------ [INFO] Preparing tomcat:run [INFO] [resources:resources {execution: default-resources}] [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 4 resources Downloading: http://svn.asdf.com:8081/artifactory/repo/org/postgresql/postgresql/8.3/postgresql-8.3.pom [INFO] Unable to find resource 'org.postgresql:postgresql:pom:8.3' in repository central (http://repo1.maven.org/maven2) Downloading: http://svn.asdf.com:8081/artifactory/repo/java-memcached/java-memcached/1.6/java-memcached-1.6.pom [INFO] Unable to find resource 'java-memcached:java-memcached:pom:1.6' in repository central (http://repo1.maven.org/maven2) [INFO] [compiler:compile {execution: default-compile}] [INFO] Nothing to compile - all classes are up to date [INFO] [tomcat:run {execution: default-cli}] [INFO] Running war on http://localhost:8080/myApp [INFO] Using existing Tomcat server configuration at C:\cygwin\home\workspace\myApp\target\tomcat Sep 4, 2009 3:17:29 PM org.apache.catalina.startup.Embedded start INFO: Starting tomcat server Sep 4, 2009 3:17:29 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.16 Sep 4, 2009 3:17:30 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. Sep 4, 2009 3:17:31 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring FrameworkServlet 'myApp' Sep 4, 2009 3:17:31 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Sep 4, 2009 3:17:31 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080
Web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>myApp</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myApp</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
Maven tomcat插件的文档在此处说明默认上下文路径为/${project.build.finalName},它本身默认为/${artifactId}-${version}。
/${project.build.finalName}
/${artifactId}-${version}
更改上下文路径的首选方法是通过将以下内容添加到pom.xml中来更改finalName:
<build> <finalName>mycontext</finalName> </build>
另外,可以通过向pom.xml中添加一个显式插件配置块来指定其他上下文路径,如下所示:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <path>/mycontext</path> </configuration> </plugin>
如果您已在pom中定义了这两个元素中的任何一个,则应该在localhost:8080 / where处加载它。否则会在localhost:8080/${artifactId}-${version}
localhost:8080/${artifactId}-${version}