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);
}
}
上面的代码在本地环境的tomcat 8中工作,但在生产环境的tomcat 8中,getMeta()
方法不起作用。
在本地环境中,在服务器启动时调用getSessionFactoryBuilder
方法,以便它在Local中工作,但在生产环境中getSessionFactoryBuilder
方法未调用getMeta()
返回{{1} }}
任何帮助都可以得到赞赏。
请帮我解决这个问题。
答案 0 :(得分:0)
最后我找到了答案。
这是一个编译问题。 META-INF
文件夹中没有classes
文件夹,因此在服务器启动期间metadata
未加载(意味着getSessionFactoryBuilder
方法未被调用)。在本地环境中,META-INF
文件夹中有classes
。但是在生产环境中它不可用,因此尝试编译META-INF
并在classes
文件夹中可用,然后它正在发挥作用。