2013-08-20 19 views
6

Sto provando a convalidare un record utente dal mio database utilizzando Spring Framework, RESTful Web Services e l'implementazione di Jersey.RuntimeException non può essere mappato a una risposta, re-lancio al contenitore HTTP java.lang.NullPointerException

Sto usando MySQL v5.6.0, Eclipse Galileo, Apache Tomcat v6.0

UserAccessWS.java

@Path("/user") 
@Service 
public class UserAccessWS { 
@Autowired 
private IUserService userService; 
private static Logger LOGGER = Logger.getLogger(UserAccessWS.class); 

@POST 
@Path("/validateUser") 
@Produces({ MediaType.APPLICATION_JSON }) 
public String getValidateUser(@Context HttpServletRequest request, 
     @FormParam("userName") String userName, 
     @FormParam("password") String password) throws JSONException { 
    LOGGER.info("getValidateUser method"); 
    Users users = new Users(); 
    users.setUserName(userName); 
    users.setPassword(password); 
    List<Users> userList = new ArrayList<Users>(); 
    userList = userService.validateUser(users); 

    JSONObject userInfo = new JSONObject(); 
    userInfo.put("authorize", true); 
    return userInfo.toString(); 
} 

@POST 
@Path("/login") 
@Produces({ MediaType.APPLICATION_JSON }) 
public String userLogin(
     @FormParam("userName") String userName, 
     @FormParam("password") String password) 
       throws Exception 
{ 
    LOGGER.info("in UserAccessWS::userLogin()"); 

    JSONObject json = new JSONObject(); 
    JSONArray jsonArr = new JSONArray(); 
    List<Users> userList = new ArrayList<Users>(); 
    userList = userService.userLogin(userName, password); 

errore Null viene sottolineato in questa linea "userList = userService .userLogin (userName, password); "

//System.out.println(userList); 

    if (userList.size() == 0) 
    { 
     json.put("status", "fail"); 
    } 
    else 
    { 
     json.put("status", "success"); 
     jsonArr.add(userList.get(0)); 
     json.put("data", jsonArr); 
    } 
    //System.out.println(jsonArr.get(0).userId); 
    return json.toString(); 
} 

IUserService.java

package com.cisco.service.view; 
import java.util.List; 
import org.json.JSONObject; 
import com.cisco.connectivity.rs.mapper.ForgotPassword; 
import com.cisco.connectivity.rs.mapper.PasswordChange; 
import com.cisco.connectivity.rs.mapper.Registration; 
import com.cisco.model.xml.domain.Email; 
import com.cisco.model.xml.domain.Users; 
public interface IUserService { 

public List<Users> validateUser(Users users); 

public List<Users> userLogin(String userName, String password); 

public String userChangePassword(PasswordChange change); 

public List<Email> userForgotPassword(ForgotPassword forgot); 

public JSONObject saveData(Registration registration); 

public JSONObject check(String userName); 

public JSONObject editData(Registration registration); 

public JSONObject deleteData(Registration registration); 

public JSONObject getData(Registration registration); 

public JSONObject getRegistrationFormData(String userName); 
} 

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/tx/spring-aop-2.5.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd" 
default-autowire="byName"> 

<bean id="applicationProperties" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="ignoreResourceNotFound" value="true" /> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
    <property name="searchSystemEnvironment" value="true" /> 
</bean> 

<context:component-scan base-package="com.cisco" /> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306/pooler_mgmt" /> 
    <property name="username" value="root" /> 
    <property name="password" value="" /> 
</bean> 

<bean id="systemProperties" class="java.util.HashMap"></bean> 
<bean id="systemEnvironment" class="java.util.HashMap"></bean> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.5"> 

<display-name>CiscoPoolerMgmt</display-name> 
<description>CiscoPoolerMgmt</description> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:/CiscoPoolerMgmt/config/applicationContext.xml</param-value> 
</context-param> 

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>classpath*:/CiscoPoolerMgmt/config/log4j.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 


<!-- REST web service --> 
<servlet> 
    <servlet-name>REST_stat_web_service</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> 
     <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.cisco.ws</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>REST_stat_web_service</servlet-name> 
    <url-pattern>/cisco_BI/rest/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

errore che sto ottenere è:

SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
java.lang.NullPointerException 
at com.cisco.ws.UserAccessWS.userLogin(UserAccessWS.java:69) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:149) 
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) 
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:259) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133) 
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133) 
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71) 
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:990) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932) 
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Unknown Source) 
Aug 21, 2013 12:54:21 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet REST_stat_web_service threw exception 
java.lang.NullPointerException 
at com.cisco.ws.UserAccessWS.userLogin(UserAccessWS.java:69) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:149) 
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) 
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:259) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133) 
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83) 
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133) 
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71) 
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:990) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941) 
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932) 
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451) 
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Unknown Source) 

La banca dati da cui si deve convalidare i dati inseriti dall'utente non è vuoto. Ha i record in loro. Ma tramite questa query dà sempre una NullPointerException.

Please help me out.

+0

Allora, qual è il valore? –

+0

Siamo spiacenti, prima non avevo incollato il codice pertinente. Ora l'ho aggiornato. Grazie per il pin che lo punta. Sono nuovo qui. – user2639869

+0

@ user2639869 non riesco a vedere 'implementazione IUserService' ovunque – soulcheck

risposta

0

Potrebbe essere una risposta tardiva. Sospetto che il valore di userService sia nullo. Non è autowired correttamente. Perché qui hai citato default-autowire="byName" nel tuo applicationContext.xml. Non sono riuscito a trovare il bean denominato userService nel tuo applicationContext.xml. Penso che sia necessario aggiungere la riga sottostante in te applicationContext.xml

<bean id="userService" class="yourIUserServiceImplClass"></bean> 
Problemi correlati