Maven Tomcat Embedded

匿名 (未验证) 提交于 2019-12-03 03:08:02

问题:

I am trying to run a Spring webapp using maven with the

mvn tomcat:run 

command, but whenever I navigate to http://localhost:8080/myApp, I get the error: "The requested resource () is not available". Nothing shows up in the logs. I think my app is supposed to be deployed to "/" instead of "/myApp". Is there a way to do this?

Maven output log:

[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> 

回答1:

The documentation for the maven tomcat plugin here states The default context path is /${project.build.finalName}, which itself defaults to /${artifactId}-${version}.

The preferred way of changing the context path is to change the finalName by adding the following to your pom.xml:

<build>         <finalName>mycontext</finalName> </build> 

Alternatively, a different context path can be specified by adding an explicit plugin configuration block to your pom.xml as follows:

<plugin>         <groupId>org.codehaus.mojo</groupId>         <artifactId>tomcat-maven-plugin</artifactId>         <configuration>                 <path>/mycontext</path>         </configuration> </plugin> 

If you've defined either of those two elements in your pom, then it should be loading at localhost:8080/wherever. Otherwise it'll be at localhost:8080/${artifactId}-${version}



文章来源: Maven Tomcat Embedded
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!