小编zhu*_*zzz的帖子

为什么 java newInstance 挂在 getDeclaredConstructors0 处?

我们使用mozlia rhino生成动态类,然后通过自定义类加载器加载JsClass,如下所示

DynamicClassLoader loader = new DynamicClassLoader(JavaScriptFactory.class.getClassLoader());
Class<?> jsClass = loader.loadClass("D://","com.huawei.xxx");
jsClass.newInstance();
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,每个JsClass都有一个单独的类加载器,当用户修改js时,我们也会通过这段代码重新加载JsClass,

现在,我们面临一个问题,当调用 jsClass.newInstance() 时,某些线程在 getDeclaredConstructors0 处挂起很长一段时间(3s-1000s),通常应该小于 10ms。有人可以告诉我可能的原因吗?非常感谢!

JDK: 1.8.0.60

雄猫: 7.0.59

Jvm参数:

-Dnop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -DDN=mateinfo_app -server -Duser.timezone=GMT -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 -XX:+DisableExplicitGC -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintGCDetails -Xloggc:/opt/mateinfo/logs/app/tomcat-gc-20160601-233343.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/mateinfo/logs/app/oom-20160601-233343.bin -XX:OnOutOfMemoryError=./deal-oom.sh -Xms3260m -Xmx3260m -Xmn800m -XX:MetaspaceSize=800m -XX:MaxMetaspaceSize=800m -XX:SurvivorRatio=16 -XX:+OptimizeStringConcat -Xverify:all -Dsoapui.log4j.config=/opt/mateinfo/app/lib/log4j.properties -Dlog4j.ignoreTCL=true -XX:-OmitStackTraceInFastThrow -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/opt/mateinfo/app/endorsed -classpath /opt/mateinfo/app/bin/bootstrap.jar:/opt/mateinfo/app/bin/tomcat-juli.jar -Dcatalina.base=/opt/mateinfo/app -Dcatalina.home=/opt/mateinfo/app -Djava.io.tmpdir=/opt/mateinfo/app/temp org.apache.catalina.startup.Bootstrap start
Run Code Online (Sandbox Code Playgroud)

线程转储:

----------------- 7123 -----------------
0x00007f9d44cdc6d5       __pthread_cond_wait + 0xc5
0x00007f9d43cc157c       _ZN15JvmtiRawMonitor11SimpleEnterEP6Thread + 0xdc …
Run Code Online (Sandbox Code Playgroud)

java jvm rhino classloader

6
推荐指数
1
解决办法
2108
查看次数

Kerberos 授权不适用于 Chrome 和 FireFox,但适用于 IE

我按照本指南将 cas 与 Windows AD 集成。

几天前,它在每个浏览器上都运行良好。但它不仅仅适用于IE,当我使用firefox浏览器时,仅发送“Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==”到服务器,然后浏览器返回到cas登录页面。

最近才在生产环境中发现这个问题。我有一个具有相同配置的测试环境,但到目前为止它运行良好。

我知道当 kerberos 票证未缓存在本地时,浏览器将发送“协商 TlRMT...”。但我可以用 klist 命令看到票证,并且它在 IE 上工作意味着票证没问题。

我想这可能是由 Windows 客户端或广告服务器的某些配置引起的,任何人都可以给我一些建议,tks!

https://1056-app.test.com ” 已添加到 Firefox 上的“network.negotiate-auth.trusted-uris”。我也尝试过重新安装firefox,还是不行。

铬:55

IE:11

火狐:56

Clinet浏览器操作系统:Windows 7

AD服务器操作系统:Windows Server 2008 R2

Cas服务器操作系统:Suse11Sp3

这是 FireFox 上的 http 转储

GET https://1056-app.test.com/cas/login 401 Unauthorized

Response Headers
Server : nginx/1.8.0
Date : Fri, 13 Oct 2017 10:38:08 GMT
Content-Type : text/html;charset=UTF-8
Transfer-Encoding : chunked
Connection : keep-alive
Pragma : no-cache
Expires : Thu, 01 Jan 1970 00:00:00 GMT …
Run Code Online (Sandbox Code Playgroud)

firefox google-chrome kerberos spnego negotiate

5
推荐指数
1
解决办法
1万
查看次数

如何在elasticsearch集群之间同步数据?

我想要在不同的物理位置进行 elasticsearch 数据备份。一开始我尝试将所有elasticsearch节点放在同一个集群中,但是当程序查询或更新elasticsearch时,大数据会在互联网上传输。会造成大量的网络流量费用,并且存在网络延迟。

有没有什么简单的方法可以在两个 elasticsearch 集群之间同步数据?这样我只能在互联网上同步更改的数据。

PS:我不太关心数据同步延迟,小于 1 分钟是可以接受的

elasticsearch

2
推荐指数
1
解决办法
8847
查看次数