2016-07-20 2 views
1
public class EntityMetaData implements SessionFactoryBuilderFactory { 

    // private static final ThreadLocal<MetadataImplementor> meta = new ThreadLocal<>(); // previously used, but did not work, so used HashMap 

     private static final Map<String, MetadataImplementor> meta = new HashMap<>(); 
     private static final String METADATAKEY = "M"; 

    @Override 
    public SessionFactoryBuilder getSessionFactoryBuilder(MetadataImplementor metadata, SessionFactoryBuilderImplementor defaultBuilder) { 
    // meta.set(metadata); 

     meta.put(METADATAKEY, metadata); 
     return defaultBuilder; 
    } 

    public static MetadataImplementor getMeta() { 
//  return meta.get(); 

     return meta.get(METADATAKEY); 
    } 
} 

Le code ci-dessus fonctionne dans tomcat 8 de l'environnement local, mais dans tomcat 8 de l'environnement de production ne fonctionne pas comme getMeta() méthode retourne null.Migration de mise en veille prolongée 3 à hiberner 5: sessionFactory (MetadataImplementor) est nulle

Dans l'environnement local, la méthode getSessionFactoryBuilder est appelée alors que le serveur est de commencer afin qu'il travaille en local, mais dans la méthode environnement de production getSessionFactoryBuilder pas appelé ainsi getMeta() retours null.

Toute aide pourrait être appréciée.

S'il vous plaît aidez-moi à ce sujet.

+0

S'il vous plaît, quelqu'un peut m'aider à ce sujet .. C'est un problème de «production». – AppHouze

Répondre

0

Enfin j'ai trouvé la réponse.

C'est un problème de compilation. META-INF dossier n'est pas là dans le dossier classes, donc metadata ne se charge pas (signifie getSessionFactoryBuilder méthode ne pas être appelé) lors du démarrage du serveur. Dans l'environnement local, META-INF est là dans classes dossier..Mais dans l'environnement de production, il n'est pas disponible, donc essayé de compiler META-INF et disponible dans le dossier classes, puis après il fonctionne.