2009-10-08 12 views
1

Je suis en train d'accéder à la classene peut pas accéder au service de printemps annoté

définie @service Les interfaces sont définies, voici une implémentation

@Service 
    public class TypeServiceImpl implements TypeService { 

     @Autowired 
     TypeDAO dao; 

     public List<DocType> findAll() { 
    System.out.println("accessing findAll"); //have no appearence 
    return dao.findAll(); 
} 

TypeDAOImpl public() { System.out.println ("Construire TypeDAOImpl"); }

... 

} 
Code

pour DAO:

@Repository 
public class TypeDAOImpl extends BaseDAO<Type, Long> implements TypeDAO{ 

} 

BaseDAO:

public class BaseDAO<T, ID extends Serializable> extends GenericDAOImpl<T, ID> { 

    @Autowired 
    @Override 
    public void setSessionFactory(SessionFactory sessionFactory) { 
     super.setSessionFactory(sessionFactory); 
    } 
} 

utilisé la configuration generic dao pour des charges d'applications bien (pas avertir ou err), mais quand je suis en train pour utiliser le service:

@Autowired 
private TypeService TypeService; 
public void init() { 

     try { 
      for (Type d : TypeService.findAll()) { 
       System.out.println(d.getType()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

dans applicationContext:

<!-- Use annotations (@Autowired) for property injection --> 
    <context:annotation-config /> 

dans les journaux: INFO: singletons pré-instanciation dans org.s[email protected]14db0e3: ... typeDAOImpl, appMain, typeServiceImpl

mon web.xml

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:/config/application-context.xml,classpath:/config/datasource-context.xml</param-value> 
    </context-param> 
    <context-param> 
     <description> 
    Vaadin production mode</description> 
     <param-name>productionMode</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <listener> 
     <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>My Application</servlet-name> 
     <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class> 
     <init-param> 
      <description> 
     Vaadin application class to start</description> 
      <param-name>application</param-name> 
      <param-value>myapp.main.MainApp</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>My Application</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
... 

trace de la pile est "très informationnelle" (j'ai utilisé Vaadin comme framework web)

java.lang.NullPointerException à main.AppMain.init (AppMain.java:26) à com.vaadin.Application.start (Application.java:497) à com.vaadin.terminal.gwt.server.AbstractApplicationServlet .startApplication (AbstractApplicationServlet.java:1001) à com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service (AbstractApplicationServlet.java:411) à javax.servlet.http.HttpServlet.service (HttpServlet.java:717) à org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) à org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) à org.apache.catalina.core.StandardWrapperValve .invoke (StandardWrapperValve.java:233) à org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) à org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) à org.apache.catalina.valves. ErrorReportValve.invoke (ErrorReportValve.java:102) à org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) à org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:293) à org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:849) à org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process (Http11Protocol.java:583) à org.apache.tomcat. util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:454) at java.lang.Thread.run (source inconnue)

Des suggestions?

j'ai ajouté des constructeurs pour GenericDAOHibernate et TypeDAOImpl, afin que je sache, ces haricots sont initialisés ... 12.10.2009 12:57:48 org.hibernate.impl.SessionFactoryImpl INFO: usine de construction de la session 12,10. 2009 12:57:48 org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: usine ne lie pas à JNDI, aucun nom JNDI configuré la construction générique DAO Construire TypeDAOImpl 12.10.2009 12:57:48 org.springframework.web .context.ContextLoader initWebApplicationContext ...

Je ne comprends pas parce que cette config a travaillé avec ZK ..

+0

Juste une supposition, mais avez-vous les espaces de noms appropriés ajoutés à votre contexte d'application Spring? – duffymo

+0

Pourriez-vous ajouter le stackstrace? –

+0

J'ai demandé cela dans un commentaire ci-dessous et, basé sur la trace de la pile ci-dessus, je demanderai à nouveau - est AppMain (qui est probablement d'où le dernier exemple de code ci-dessus - celui avec la méthode init() ' comme un haricot dans votre contexte? Parce que sinon, comment voulez-vous que le câblage automatique fonctionne? – ChssPly76

Répondre

0

Le code que vous avez posté est plutôt incohérent.

findAll() La méthode n'est déclarée nulle part; L'implémentation de service implémente Service mais vous essayez de l'activer automatiquement en TypeService, ce qui ne fonctionne pas.

Si le premier fragment de code a été écrit à la place:

@Service 
public class TypeServiceImpl implements TypeService { 

et ce fut la seule mise en œuvre TypeService dans votre contexte d'application, aurait travaillé auto-câblage.

+0

findAll() déclarée dans TypeServiceImpl: Liste publique findAll() { \t \t System.out.println ("accès findAll"); // n'apparaît pas !! \t \t return dao.findAll(); Dao basé sur GenericDAOImpl – ziftech

+0

Le code dans lequel vous essayez d'utiliser le service (votre dernier extrait de code) - D'où vient ce code? Est-ce aussi une partie d'un haricot déclaré dans le ** même ** contexte? – ChssPly76

Questions connexes