MAK
MAK

Reputation: 390

Request resource is not found 404 error while running maven project on tomcat in eclipse

I am running my spring-rest application build on maven on tomcat in eclipse. While running the project on tomcat server it is showing 404 request resource is not found. I imported the rest project from( https://github.com/spring-projects/spring-data-book )enter image description here

my web.xml file:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


<display-name>roo-spring-data-jpa</display-name>

<description>Roo generated roo-spring-data-jpa application</description>


<!-- Enable escaping of form submission contents -->
<context-param>
    <param-name>defaultHtmlEscape</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter>
    <filter-name>HttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>HttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Handles Spring requests -->
<servlet>
    <servlet-name>roo-spring-data-jpa</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring/webmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>roo-spring-data-jpa</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/uncaughtException</location>
</error-page>

<error-page>
    <error-code>404</error-code>
    <location>/resourceNotFound</location>
</error-page>

my ApplicationConfig.java file

  package com.oreilly.springdata.rest;

  import javax.persistence.EntityManagerFactory;
  import javax.sql.DataSource;

 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import       org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
 import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
 import org.springframework.orm.jpa.JpaTransactionManager;
 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  import org.springframework.orm.jpa.vendor.Database;
  import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  import org.springframework.transaction.PlatformTransactionManager;
  import org.springframework.transaction.annotation.EnableTransactionManagement;

  /**
  * Spring JavaConfig configuration class to setup a Spring container   and    infrastructure components like a
* {@link DataSource}, a {@link EntityManagerFactory} and a {@lin PlatformTransactionManager}.
* 
* @author Oliver Gierke
*/
 @Configuration
@ComponentScan
@EnableJpaRepositories
@EnableTransactionManagement
 class ApplicationConfig {

/**
 * Bootstraps an in-memory HSQL database.
     * 
 * @return
 * @see http 
 *      ://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jdbc.html#jdbc-embedded-database
 *      -support
 */
@Bean
public DataSource dataSource() {
    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
    return builder.setType(EmbeddedDatabaseType.HSQL).build();
}

/**
 * Sets up a {@link LocalContainerEntityManagerFactoryBean} to use Hibernate. Activates picking up entities from the
 * project's base package.
 * 
 * @return
 */
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setDatabase(Database.HSQL);
    vendorAdapter.setGenerateDdl(true);

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan(getClass().getPackage().getName());
    factory.setDataSource(dataSource());

    return factory;
}

@Bean
public PlatformTransactionManager transactionManager() {

    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(entityManagerFactory().getObject());
    return txManager;
}

}

I was struck here for an hour, So i am posting it here. can any one please help me. Thanks in advance.

Upvotes: 3

Views: 20592

Answers (4)

Naveen Garg
Naveen Garg

Reputation: 91

Please check if your build path entries are being exported to Tomcat. Check the entries in Web Deployment Assembly under your project properties.

Hope this helps

Upvotes: 0

Kasun Kariyawasam
Kasun Kariyawasam

Reputation: 2447

Try http://localhost:8080/spring-data-book-reset/index.jsp if not works then Manually copy the spring-data-book-reset.war file into Tomcat/webapps/ and up the server manually in this way --> Go to Tomcat/bin in terminal and type sh catalina.sh run. Now try using your url. It might works. If it not works, somtimes it may be your configuration problem. Then post your web.xml and ApplicationContextConfiguration.xml here.

Upvotes: 4

Saurabh Jhunjhunwala
Saurabh Jhunjhunwala

Reputation: 2922

There could be multiple reasons for this issue.

  1. The war deployed does not correspond to the same name as requested
  2. As you are using spring, there might not be any confirguration xml used as servlet in the web.xml
  3. You might not have defined any welcome page.

please share your web.xml and folder structure for better understanding

Upvotes: 1

Viswanath Donthi
Viswanath Donthi

Reputation: 1821

It's a common problem. Follow the steps:

  • Click on Window > Show view > Server OR right click on the server in "Servers" view, select "Properties".

  • Open the Overview screen for the server by double clicking it. In the Server locations tab , select "Use Tomcat location".

  • Save the configurations and restart the Server.

That's it...!!

Upvotes: 1

Related Questions