- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在带有 DCEVM(完整实现)的 JVM 1.7 和带有自定义插件的 HotSwapAgent 上运行 WebLogic,该插件在每个 onClassLoad 上触发。
我遇到了使用 java.beans.Introspector 的 Freemarker 的问题。我发现的事实是,当我对 HotSwapAgent 调用的方法(通过 ReflectionCommand)调用 Introspector.flushCaches 时,Introspector 中的 BeanInfo 会正确失效(使用该线程中的调试器检查)。但是,当我向 WLS 应用程序服务器发出请求时,工作线程的 Introspector 会显示旧值!
这似乎是一些线程本地实现,但我无法在 java.beans.Introspector 的文档中找到任何指向该假设的内容。
有没有人知道为什么会发生这种情况以及如何解决?
目前,我将有关重新加载的类的信息存储在单独的类中,并从请求线程重新加载该缓存中的所有内容,该线程有效。
感谢您提供任何线索。
最佳答案
感谢@ddekany 和他对相关问题的回答 Freemarker removeIntrospectionInfo does not work with DCEVM after model hotswap
似乎 JVM(至少是 HotSpot 1.7)按 ThreadGroup 缓存 Introspector 的缓存。这意味着,Introspector.flushCaches
必须在相应的 ThreadGroup
中运行的线程中调用.
当我对应用程序中的所有 ThreadGroup 执行此操作时,一切又开始正常工作。
我找不到任何文档为什么会出现 java.beans.Introspector
按 ThreadGroup
缓存因此,如果有人对此有可靠信息,请添加带有链接的评论。
谢谢。
更新:
来自 JDK7 源代码
/**
* Introspect on a Java Bean and learn about all its properties, exposed
* methods, and events.
* <p>
* If the BeanInfo class for a Java Bean has been previously Introspected
* then the BeanInfo class is retrieved from the BeanInfo cache.
*
* @param beanClass The bean class to be analyzed.
* @return A BeanInfo object describing the target bean.
* @exception IntrospectionException if an exception occurs during
* introspection.
* @see #flushCaches
* @see #flushFromCaches
*/
public static BeanInfo getBeanInfo(Class<?> beanClass)
throws IntrospectionException
{
if (!ReflectUtil.isPackageAccessible(beanClass)) {
return (new Introspector(beanClass, null, USE_ALL_BEANINFO)).getBeanInfo();
}
ThreadGroupContext context = ThreadGroupContext.getContext();
BeanInfo beanInfo;
synchronized (declaredMethodCache) {
beanInfo = context.getBeanInfo(beanClass);
}
if (beanInfo == null) {
beanInfo = new Introspector(beanClass, null, USE_ALL_BEANINFO).getBeanInfo();
synchronized (declaredMethodCache) {
context.putBeanInfo(beanClass, beanInfo);
}
}
return beanInfo;
}
关于weblogic - 带有 DCEVM 和 HotSwapAgent 的 WebLogic 上的奇怪 java.beans.Introspector 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768348/
我一直在为 HotSwapAgent 开发自定义插件,但遇到类加载器缺少插件类的奇怪问题。 这是抛出的异常 #### > <> <> (PluginConfiguration.java:
我正在尝试在我们的项目中使用 HotSwapAgent。我们使用的是 Wildfly 10.x,我们的项目被部署为爆炸式 EAR,其中存在爆炸式 war 。我添加了以下 JVM 选项: -XXaltj
在更改我的代码时,我在尝试使用 DCEVM (8u181) 和 Tomcat (7.0.62.0) 运行 HotswapAgent (1.3.0) 时遇到了以下问题: HOTSWAP AGENT: 1
我正在尝试使用HotswapAgent/DCEVM在混合 Clojure/Java Leiningen 项目中,以避免在重新编译 Java 源代码后必须重新启动 REPL(我已经知道其他方法,例如 J
我在带有 DCEVM(完整实现)的 JVM 1.7 和带有自定义插件的 HotSwapAgent 上运行 WebLogic,该插件在每个 onClassLoad 上触发。 我遇到了使用 java.be
我是一名优秀的程序员,十分优秀!