0

I am developing rest API with JAX.ws/jersey with spring framework. But spring is not injecting one of its dependency as shown below in code.And i am facing NullPointerException. i googled it but still stuck in. I tried all the possible ways i can. please help me to get rid off nullpointerexception.In RestController.java i am using @Autowired annotation.

POM.xml

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.test</groupId>
      <artifactId>test</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>test Maven Webapp</name>
      <url>http://maven.apache.org</url>

        <properties>
            <springframework.version>5.1.5.RELEASE</springframework.version>
            <hibernate.version>5.4.1.Final</hibernate.version>
            <mysql.connector.version>8.0.13</mysql.connector.version>
        </properties>

        <dependencies>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${springframework.version}</version>
            </dependency>
             <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${springframework.version}</version>
            </dependency>

            <!-- Hibernate -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>

            <!-- jsr303 validation -->
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>2.0.1.Final</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>${hibernate.version}</version>
            </dependency>

            <!-- MySQL -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.version}</version>
            </dependency>

            <!-- Servlet+JSP+JSTL -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>

            <!-- JAX.ws + JERSEY -->
            <dependency>
              <groupId>org.glassfish.jersey.containers</groupId>
              <artifactId>jersey-container-servlet</artifactId>
              <version>2.28</version>
            </dependency>

            <dependency>
              <groupId>org.glassfish.jersey.media</groupId>
              <artifactId>jersey-media-json-jackson</artifactId>
              <version>2.28</version>
            </dependency>

            <dependency>
              <groupId>org.glassfish.jersey.media</groupId>
              <artifactId>jersey-media-multipart</artifactId>
              <version>2.28</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.inject</groupId>
                <artifactId>jersey-hk2</artifactId>
                <version>2.28</version>
            </dependency>   
        </dependencies> 
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.2</version>
                        <configuration>
                            <source>1.7</source>
                            <target>1.7</target>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>

RestConfig.java

    package com.test.config;

    import java.util.HashMap;
    import java.util.Map;
    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;

    @ApplicationPath("/rest")
    public class RestConfig extends Application {

        @Override
        public Map<String, Object> getProperties() {
            Map<String, Object> properties = new HashMap<String, Object>();
            properties.put("jersey.config.server.provider.packages", "com.test");
            return properties;
        }
    }

RestController.java

    package com.test.rest.controller;

    import java.util.List;

    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;

    import com.test.model.UserLogin;
    import com.test.service.UserLoginService;

    @Path("/users")
    public class RestController {

        @Autowired
        private UserLoginService uls;

        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public List<UserLogin> fetchAll() {
            System.out.println("[[[xx]]] " + uls);
            return uls.fetchingUsersDetails();
        }
    }

UserLogin.java

    package com.test.model;


    import java.util.Date;

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.Transient;
    import javax.validation.constraints.Pattern;
    import org.hibernate.validator.constraints.NotEmpty;
    /**
     * @author RIPL
     *
     */

    @Entity
    @Table(name="tbl_userLoginDetails")
    public class UserLogin {

        @Id
        @Column(name="id")
        @GeneratedValue(strategy= GenerationType.IDENTITY)
        private Integer id;

        @Column(name="userName")
        @NotEmpty
        private String userName;

        @Column(name="gender")
        @NotEmpty
        private String gender;

        @Column(name="hobby")
        @NotEmpty
        private String[] hobby;

        @Column(name="country")
        @NotEmpty
        private String country;

        @Column(name="password")
        @NotEmpty
        @Pattern(regexp="(^[a-zA-Z0-9]{6,10}+$|^$)")
        private String password;

        @Transient
        private String message;

        @Column(name="myDate")
        private Date date;

        public Integer getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }

        public String[] getHobby() {
            return hobby;
        }

        public void setHobby(String[] hobby) {
            this.hobby = hobby;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public Date getDate() {
            return date;
        }

        public void setDate(Date date) {
            this.date = date;
        }

    }

UserLoginServiceImpl.java

    package com.test.serviceimpl;

    import java.util.List;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import com.test.dao.UserLoginDao;
    import com.test.model.UserLogin;
    import com.test.service.UserLoginService;

    @Service
    public class UserLoginServiceImpl implements UserLoginService{

        @Autowired
        private UserLoginDao uld;

        @Override
        public void saveUser(UserLogin ul) {
            uld.saveUser(ul);
        }

        @Override
        public List<UserLogin> fetchingUsersDetails() {
            return uld.fetchingUsersDetails();
        }

        @Override
        public void deletingUser(UserLogin ul) {
            uld.deletingUser(ul);
        }

        @Override
        public UserLogin fetchingUserDetailThroughId(UserLogin ul) {
            // TODO Auto-generated method stub
            UserLogin userLogin = uld.fetchingUserDetailThroughId(ul);
            if(userLogin==null){userLogin = new UserLogin();userLogin.setMessage("id not found !");}
            return userLogin;
        }

    }

UserLoginDaoImpl.java

        package com.test.daoimpl;

    import java.util.List;
    import org.hibernate.SessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Repository;
    import org.springframework.transaction.annotation.Transactional;
    import com.test.dao.UserLoginDao;
    import com.test.model.UserLogin;

        @Repository
        @Transactional
        public class UserLoginDaoImpl implements UserLoginDao{

            @Autowired
            private SessionFactory sessionFactory;

            @Override
            public void saveUser(UserLogin ul) {
                sessionFactory.getCurrentSession().saveOrUpdate(ul);
            }

            @SuppressWarnings("unchecked")
            @Override
            public List<UserLogin> fetchingUsersDetails() {
                return sessionFactory.getCurrentSession().createCriteria(UserLogin.class).list();
            }

            @Override
            public void deletingUser(UserLogin ul) {
                sessionFactory.getCurrentSession().delete(ul);
            }

            @Override
            public UserLogin fetchingUserDetailThroughId(UserLogin ul) {
                UserLogin userLogin =  (UserLogin) sessionFactory.getCurrentSession().get(UserLogin.class, ul.getId());
                return userLogin;
            }

        }

output

javax.servlet.ServletException: java.lang.NullPointerException
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:408)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:365)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:318)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:5

0 Answers0