那么,如何惰性加载一个单例,同时防止它受到这种攻击呢?(我知道“enum”模式,但有些人认为它实际上是一种黑客攻击。查看关于这个公认答案的评论:这个单例是否同时抵抗序列化和反射攻击?顺便说一句,我的问题不同)。
编辑:我认为在DCL的情况下可以通过使用静态计数器字段、基于类的同步构造函数并将“this”分配给静态成员来防止它。但是,不知道如何防止它的情况下持有者成语。
就我个人而言,我坚持使用枚举,但也有按需初始化持有者(IODH)习惯用法
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
这出现在有效的Java中(第48项),但我第一次听说它是从疯狂的bob的一篇文章中
http://blog.crazybob.org/2007/01/lazy-loading-singletons.html
我以primefaces页面为例(http://www.primefaces.org/showcase/ui/datatableLazy.jsf),它起了作用,但因为示例是在构造函数上加载列表,所以它并不是完全的延迟加载。我知道这是一个虚构的例子,所以我在我的bean上添加了以下几行 我的初始化功能我把一些部分改成了这个 我的FichaLazyList是这样的 我得到这个错误, 第55行是这个吗
我遇到的问题类似于以下情况:Jboss Wildfly EJB3和Mybatis部署错误:NoSuchMethodError javax.persistence.table.indexes()[ljavax/persistence/index;但这并没有阻止我部署EAR,我的问题发生在尝试执行DAO中的一个方法时,该方法使用Mybatis映射器,并对另一个映射器进行惰性加载引用。我得到以下异常:
问题内容: 使用反射而不是调用类构造函数来创建对象是否会导致任何显着的性能差异? 问题答案: 由于反射涉及动态解析的类型,因此无法执行某些Java虚拟机优化。因此,反射操作的性能要比非反射操作慢,因此应避免在对性能敏感的应用程序中经常调用的代码段中。 这是一个简单的测试,我在运行Sun JRE 6u10的计算机上用5分钟的时间破解了它: 结果如下: 请记住,查找和实例化是一起完成的,在某些情况下,
我有一个数据表的问题-懒加载。我认为问题是在IdiomasBean.java(TableBean.java),如果我把: 我得到了正确的数据表,但是<代码>按排序、筛选和不起作用。 我得到:java。lang.NullPointerException这里是堆栈跟踪: 下面是代码的其余部分: 指数xhtml diomasBean.java 懒散的数据模型。JAVA IdiomasBo.java 习语
我们目前有几个@OneToOne关系,由于已知的惰性加载的限制,它们总是会急切地从反方向获取。 为了启用逆关系的延迟加载,我正在尝试启用构建时字节码检测。 到目前为止我所做的... 这些关系现在不再急切地加载...但是它们也不会延迟加载,它们只是静默地返回null。 我尝试从实体中删除接口和字段,因为我不确定是否需要这样做,在此之后,我在启动时不再获得消息,并且默认情况下返回到急切加载。 我是不是
这组订单应该是惰性加载的,但我得到以下异常:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是org.hibernate.lazyInitializationException:未能懒洋洋地初始化Role:...,没有会话或会话被关闭 根本原因:org.hibernate.lazyInitializationExcept