Jacob
Jacob

Reputation: 14731

Glassfish 404 error for Spring project

I have Glassfish3 server which is integrated with Eclipse Helios

I have added my sample Spring project to server using Add and Remove by right clicking server.

When I run http://localhost:8080/SpringHibernateJSFTest/insertJdbcContact.do

I am getting description The requested resource () is not available.

How can I resolve this error? What am I doing wrong?

Any help is highly appreciated.

My controller class

 @Controller
public class JBTJdbcController {
    @Autowired
    com.service.SpringJdbcService mfssService;
    @RequestMapping(value = "/insertJdbcContact", method = RequestMethod.GET)
    public ModelAndView insertMemDtls() {
        ModelAndView mav = new ModelAndView("JdbcInsert");
        VngMem mfssbean = new VngMem();
        mav.addObject("insertUser", mfssbean);
        mav.addObject("status", "success");
        return mav;
    }
    @RequestMapping(value = "/insertJdbcContact", method = RequestMethod.POST)
    public ModelAndView insertContact(
            @ModelAttribute("insertUser") VngMem vngmem) {
        ModelAndView mav = new ModelAndView("JdbcInsert");
        try {
            mfssService.insertMfssMemDts(vngmem);
        } catch (Exception e) {
            e.printStackTrace();
        }
        mav.addObject("searchResultPost", vngmem);
        return mav;
    }
}

Here is web.xml

<display-name>SpringHibernateJSFTest</display-name>
    <display-name>SpringMVC</display-name>
    <welcome-file-list>
        <welcome-file>welcome.do</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
</web-app>

My applicationContext.xml

<context:annotation-config />
<context:component-scan base-package="com.controller,com.beans" />
<mvc:annotation-driven />
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@server:1521:orcl"/>
        <property name="username" value="scott"/>
        <property name="password" value="tiger"/>

    </bean>
<bean id="SpringJdbcDao"  class="com.dao.SpringJdbcDaoImpl">
  <property name="dataSource" ref="dataSource"/>
</bean>
  <bean id="SpringJdbcService"  class="com.service.SpringJdbcServiceImpl">
  <property name="springJdbcDao" ref="SpringJdbcDao"/>
</bean>
</beans>

My dispatcher-servlet.xml

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

I have JdbcInsert.jsp in /WebContent/WEB-INF

Update 1

cannot Deploy SpringHibernateJSFTest
Deployment Error for module: SpringHibernateJSFTest: Exception while loading the app :
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: 
org.springframework.beans.factory.BeanDefinitionStoreException: 
IOException parsing XML document from class path resource [applicationContext.xml];
 nested exception is java.io.FileNotFoundException: class path resource 
 [applicationContext.xml] cannot be opened because it does not exist

Upvotes: 1

Views: 1998

Answers (2)

Sazzadur Rahaman
Sazzadur Rahaman

Reputation: 7116

You should move:

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

to dispatcher-servlet.xml.

In your dispacher-servlet.xml the id of your InternalResourceViewResolver bean should be internalResourceViewResolver, like bellow:

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

And your jsp files should be in /WEB-INF/jsp/ directory.

Thanks and happy coding!

Upvotes: 1

Boris Treukhov
Boris Treukhov

Reputation: 17774

Your ViewResolver uses /WEB-INF/jsp/ prefix, while JdbcInsert.jsp is located in /WEB-INF, you should correct the prefix to "/WEB-INF/"

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

update You have declared <mvc:annotation-driven /> in the root Application Context instead of the Dispatcher Servlet Context, this may cause some problems, for example viewResolver will be effectively invisible from the root application context.

Your mvc configuration should reside in the dispatcher servlet context.

Upvotes: 1

Related Questions