java - Error in Rest Service in SpringFramework with @Controller annotation -
i writing simple rest service using springframework , getting below error message while trying access rest service through chrome browser.
error processing request
context path:/simple_app-1.0-snapshot
servlet path:/
path info:null
query string:null
stack trace
org.springframework.web.util.nestedservletexception: request processing failed; nested exception java.lang.nullpointerexception
org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:979)
org.springframework.web.servlet.frameworkservlet.doget(frameworkservlet.java:858)
javax.servlet.http.httpservlet.service(httpservlet.java:687)
org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:843)
here pom.xml
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <name>simple_rest_v1</name> <groupid>com.rest.app</groupid> <artifactid>simple_app</artifactid> <packaging>war</packaging> <version>1.0-snapshot</version> <properties> <spring.version>4.2.6.release</spring.version> </properties> <dependencies> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context-support</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-aop</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-aspects</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-beans</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-context</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-core</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-expression</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-jdbc</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-orm</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-oxm</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-tx</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-web</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>org.springframework</groupid> <artifactid>spring-webmvc-portlet</artifactid> <version>${spring.version}</version> </dependency> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger2</artifactid> <version>2.0.1</version> </dependency> <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-core</artifactid> <version>2.4.1</version> </dependency> <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-databind</artifactid> <version>2.4.1.1</version> </dependency> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-mapper-asl</artifactid> <version>1.9.13</version> </dependency> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-core-asl</artifactid> <version>1.9.13</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-war-plugin</artifactid> <version>2.1.1</version> <configuration> <failonmissingwebxml>true</failonmissingwebxml> </configuration> </plugin> </plugins> </build> </project>
web.xml
<?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <servlet> <servlet-name>restapi</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <init-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restapi</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
and context.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.sumit.rest.app"/> <mvc:annotation-driven/> </beans>
restcontroller
@controller @requestmapping(value = "/") public class restcontroller { private static atomiclong counter = new atomiclong(); private final static string template = "hello, %s"; @requestmapping(method = requestmethod.get, headers = "accept=application/json") @responsebody public map<string, string> get() { map<string,string> map = new hashmap<>(); map.put("value","this default response"); return map; } @requestmapping(value = "/greet", method = requestmethod.get, headers = "accept=application/json", produces = mediatype.application_json_value) @responsebody public greeting getgreeting(@requestparam(value = "name", defaultvalue = "world") string name) { greeting greet = new greeting(counter.incrementandget(), string.format(template, name)); system.out.println(greet); return greet; } }
and greet.java
@jsonautodetect public class greeting { public final long id; public final string message; public greeting(long id, string message) { this.id = id; this.message = message; } public long getid() { return id; } public string getmessage() { return message; } @override public string tostring() { return "id = "+this.id + " , name = "+this.message; } }
could please point out missing or making mistake ?
the response expecting on browser json representation of greet class's object.
the above code sample code https://spring.io/guides/gs/rest-service/ difference trying non-spring boot version of sample.
any appreciated !
thanks in anticipation.
- there 2 kinds of application contexts set in case
(which decribed clear enough here purpose of contextloaderlistener – spring mvc , here).
in short if you've configured in 1 spring configuration file don't need contextloaderlistener, while use
<listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener>
it search applicationcontext.xml under web-inf, guess don't have file remove declaration.
- if use wildfly 8.1, upgrade newer version.
Comments
Post a Comment