Sprint , Hibernate , Null Pointer Exception

0

Staram sie zrobic moja pierwsza aplikacje przy uzyciu Spring oraz Hibernate
ale mam maly problem.... Wyzuca mi Exception .. Null Pointer

AccountController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uea.ht.Controllers;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.util.Assert;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
/**
 *
 * @author Tomasz
 */
import com.uea.ht.Models.*;
import com.uea.ht.Services.*;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

@Controller
public class AccountController {

    private AccountService accountService;

    public String registrationForm(Map<String, Object> map) {
        Account account = new Account();
        map.put("account", account);
        map.put("accountList", accountService.getAllaccounts());
        return "account";
    }

    @RequestMapping(value = "/register", method = RequestMethod.POST)
    public String registerAccout(@ModelAttribute("account") Account account, ModelMap model) {

        account.setPasswordSalt(account.getPasswordHash());

        try {
            accountService.add(account);              // tu wywala Exception
            return "success";
        } catch (Exception e) {
            System.err.println("dscfsd" + e.toString());
            return "fail";
        }


    }
}

Account.java

 
package com.uea.ht.Models;

public class Account  implements java.io.Serializable {


     private int id;
     private String username;
     private String passwordHash;
     private String passwordSalt;
     private String email;

    public Account() {
    }

	
    public Account(int id) {
        this.id = id;
    }
    public Account(int id, String username, String passwordHash, String passwordSalt, String email) {
       this.id = id;
       this.username = username;
       this.passwordHash = passwordHash;
       this.passwordSalt = passwordSalt;
       this.email = email;
    }
   
    public int getId() {
        return this.id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return this.username;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPasswordHash() {
        return this.passwordHash;
    }
    
    public void setPasswordHash(String passwordHash) {
        this.passwordHash = passwordHash;
    }
    public String getPasswordSalt() {
        return this.passwordSalt;
    }
    
    public void setPasswordSalt(String passwordSalt) {
        this.passwordSalt = passwordSalt;
    }
    public String getEmail() {
        return this.email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }


    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("\r\nID:").append(id);
        sb.append("\r\nusername:").append(username);
        sb.append("\r\npH:").append(passwordHash);
        sb.append("\r\npS:").append(passwordSalt);
        sb.append("\r\nemail:").append(email);
        return sb.toString();
        
    }


}



AccountService.java


package com.uea.ht.Services;

import com.uea.ht.Models.Account;
import com.uea.ht.presistence.AccountDao;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("accountService")
@Transactional(readOnly=true)
public class AccountServiceImpl implements AccountService{

    @Autowired
    private AccountDao accountDao;
    

    public void add(Account account) {
      accountDao.add(account);
    }

    @Transactional(readOnly=false)
    public void edit(Account account) {
      accountDao.edit(account);
    }

    @Transactional
    public void delete(int id) {
      accountDao.delete(id);
    }

    @Transactional
    public Account getAccount(int id) {
        return accountDao.getAccount(id);
    }

    @Transactional
    public List getAllaccounts() {
        return accountDao.getAllaccounts();
    }
    
}

AccountDao.Java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uea.ht.presistence;

import com.uea.ht.Models.Account;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

/**
 *
 * @author Tomasz
 */








@Repository
public class AccountDaoImpl extends  AbstractDaoImpl <Account, String> implements AccountDao{

    protected AccountDaoImpl()
    {
        super(Account.class);
    }

    @Override
    public void add(Account account) {
      super.saveOrUpdate(account);
    }

    @Override
    public void edit(Account account) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void delete(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Account getAccount(int id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List getAllaccounts() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
   
    
}

Error:

Mar 10, 2013 9:58:09 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/HTracker] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
	at com.uea.ht.Controllers.AccountController.registerAccout(AccountController.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Moze ktos pomoze ??
Dzieki

0

brakuje ci

@Autowired

przy

private AccountService accountService;
0

dodalem i teraz dostaje cos takiego

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accountController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.uea.ht.Services.AccountService com.uea.ht.Controllers.AccountController.accountService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.uea.ht.Services.AccountService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:530)
	at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1471)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:791)
	at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
	at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
	at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.uea.ht.Services.AccountService com.uea.ht.Controllers.AccountController.accountService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.uea.ht.Services.AccountService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
	... 56 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.uea.ht.Services.AccountService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
	... 58 more
0

A jak zostawisz przy tamtym beanie samo

@Service

albo

@Component

Bez podawania nawy?
Poza tym która to wersja Springa? Bo te wcześniejsze wymagały żebyś miał w klasie setter dla beana którego chcesz wstrzykiwać, te nowsze generują sobie proxy i nie potrzebują setterów.

0

Bez nazwy i z @component tez nie dziala :(

Wersja Springa 3.1.1

0

Ale masz taki sam log błędu? A to na pewno jest pierwszy błąd w stacktrace? Bo ten błąd wygląda trochę dziwnie - niby nie może znaleźć beana AccountService a przecież ten bean wyraźnie tam jest. Możesz to spakować i gdzieś wrzucić? Chyba ze ktoś inny widzi coś czego ja nie widze :)

0

Srsly? Mamy 2013 rok a ty nie używasz mavena? o_O Tylko masz tu jakieś antowe build taski i pakujesz mi do zipa wara? Szkoda słów.
Zrób z tego porządny projekt który normalny człowiek może zaimportować w 15 sekund. Inaczej ani ja, ani nikt inny nawet na to nie zerknie.

edit: a twój błąd polega na tym ze masz błędny applicationContext.xml
Jak chcesz używać adnotacji to musisz ustawić sobie że masz konfiguracje
context:annotation-config/
mvc:annotation-driven/

1 użytkowników online, w tym zalogowanych: 0, gości: 1