每次Java更新时,web启动jarvalidation都会变慢

我们有一个90MB的(Eclipse RCP)应用程序,带有139个自签名jar,在没有Web Start的情况下从8s开始,在Java7的旧版本中以10s开始。我们将Java配置为不使用浏览器代理,即deployment.proxy.type = 0 。 随着每次更新Oracle的Java启动性能下降。 完全启动需要花费越来越多的时间: 7u60 / 7u65 / 8u25:13s(网络启动处理5s后开始) 7u75:23s 8u31:20s 8u40:29s 8u51 / 8u60ea:32s 我该怎么做才能解决这个问题? 从跟踪/日志中我可以看到,这种减速很可能完全是由于validation缓存的jar需要更多时间。 请注意, 此问题类似,但未提供以下详细信息: 诊断: 缓存时,更新检查仅运行0.5秒(服务器返回“304 Not Modified”),但即使完全下载,千兆网络也只需几秒钟。 更新检查后,每个jar XXX都有一个日志条目: validation缓存的jar XXX.jar 完成后,启动com.sun.javaws.Main,之后相同的validation似乎再次发生并花费大约相同的时间,然后应用程序启动。 validation缓存jar所花费的时间似乎与应用程序启动前所需的额外时间相对应。 Web启动启动屏幕始终显示与更新检查相对应的约2秒,然后隐藏。 几乎20秒后,Java控制台终于出现,我的应用程序实际启动了。 在延迟期间,jp2launcher.exe在具有超线程(8个逻辑核心)的四核上使用大约16%的处理器时间。 所以看起来它完全使用了一个逻辑处理器。 我已经尝试但没有任何区别: 清除Web启动缓存(无数次) 配置deployment.properties以禁用证书吊销检查(以及blacklist.check和validation.ocsp,validation.crl) 离线运行 使用版本下载协议 添加到站点例外列表 检查Web服务器日志中的问题。 没有找到,所有138个jar子的更新检查大约500毫秒。 使用另一个Web服务器 检查证书到期日2016年2月17日 用JaNelavalidation了我的jnlp,发现没有严重的问题 创建部署规则集以允许应用程序运行未签名以加快validation。 这应该是可能的,看起来像是一种很有前途的方法来解决这个问题,但我无法让它发挥作用。 另见我对这篇文章的回答。 将Java配置为“不启动控制台” 细节:7u60上的一些奇怪的行为在7u60中,应用程序在大约5秒后启动,之后Java控制台APPEARS在应用程序启动时在后台进行jarvalidation。 但是.log文件报告在完成所有validation后应用程序启动。 它将此报告为25秒,然后显示我的应用程序的第一个System.out,它实际上仅在5秒钟后发生。 […]

类之间的Java数据文件共享

我正在创建一个从文件(Serialized objectInputStream)读取的小程序,该文件是一个注册表列表,其中每个条目都有一个设置为true或false的布尔变量。 在这个程序中,我有两个单独的JPanel类。 一个是A类,可以改变这些变量的值,另一个是B类,检查这些变量是真还是假。 这两个类是在带有main方法的gui-class下创建的。 如果我更改A类中的变量,我怎样才能看到B级中的新更新值? 我试图在每个类中做一个ObjectInput-输出流。 这意味着对于每次更改,类都会将其写入文件并在更改/读取之前将其读回。 这有效,但它是最佳的吗? 有一个更好的方法吗?

Swing中的事件调度filter链

我正在尝试组织EventQueue.dispatchEvent的 filter链 。 像java.io.FilterInputStream或javax.servlet.Filter之类的东西。 发现EventQueueDelegate.Delegate是为了这个吗?..但是在EventQueue.dispatchEvent EventQueueDelegate.Delegateexception的情况下,它对此一无所知,并且场景中出现丑陋的java.awt.EventDispatchThread .handleException 。 自Java SE 1.1以来,这个“临时黑客”还没有解决吗??? 我也期待EventQueue.dispatchEvent调用链。 但它似乎不适合这个,因为这种方法受到保护,它需要额外的手鼓舞以使事情有效并且代码变得不那么可爱。 更好的解决方案?

方法上的Beanvalidation

public class Register { @NotNull private String password; @NotNull private String passwordRepeat; @AssertTrue private boolean comparePasswords() { return password.equals(passwordRepeat); } private Set<ConstraintViolation> violations; public void doRegister(AjaxBehaviorEvent event) { Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); violations = validator.validate(this); if(violations.isEmpty()) { // This occurs } } } 如果我的密码都不为空,我的validation将通过,但它们是不同的。 似乎最后的约束似乎不会被考虑在内,尽管我不知道为什么。 有没有人有建议? 不,我不是在寻找@Matches或simular自定义validation器的任何实现。 我只想解决这个问题。 提前致谢。 更新1 我已经对此进行了一些测试,希望结果将提供所需的信息。 Bean.java @Named @RequestScoped public […]

Jlastic的弹性搜索,Spring

有人能举例说明在jHipster或Spring-boot中使用Elasticsearch吗? 我已经使用jHipster生成了实体。 有占位符的输入:查询! /** * SEARCH /_search/samples/:query -> search for the sample corresponding * to the query. */ @RequestMapping(value = “/_search/samples/{query}”, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @Timed public List search(@PathVariable String query) { return StreamSupport .stream(sampleSearchRepository.search(queryString(query)).spliterator(), false) .collect(Collectors.toList()); } 如何使用elasticsearch? 这里有一些我在生成实体中找到的脚本! 我已经尝试过放置Object , q = field:value , 弹性格式的数组,并且总是得到空数组 。 抱歉英语不好!

使用java中的索引交换数字不起作用

package dspermutation; import java.util.Scanner; public class DSPermutation { String s; char[] c; int n; public static void main(String[] args) { DSPermutation ds=new DSPermutation(); ds.input(); } private void input() { Scanner sc=new Scanner(System.in); System.out.println(“Enter the string”); s=sc.next(); c=s.toCharArray(); n=c.length; permutation(c,n-1,0); } private void permutation(char[] cc,int nn,int ii) { if(ii==nn) { System.out.println(cc); } else { for(int j=ii;j<=nn;j++) […]

使用Java或JVMTI标识当前的JVM

我想确定当前运行的JVM。 在JVMTI文档中描述的函数的最佳情况下,但我找不到任何东西。 我的意思是这样的: VirtualMachine.list()提供: [sun.tools.attach.WindowsAttachProvider@46ae506e: 2440 de.fu.profiler.view.MainFrame… 但它显示所有JVM,而不是当前正在运行的JVM。

通过spring security将密码传递给dao对象

我正在使用struts2和spring security创建一个应用程序,并且几乎没有问题/问题。 如何将密码传递给DAO以便将密码和用户名与DB的结果进行比较? 我知道可以通过实现UserDetailsService并覆盖该方法来传递用户名 public UserDetails loadUserByUsername(String username) 第二个问题是我在重写loadUserByUsername()调用了方法SecurityContextHolder.getContext().getAuthentication()得到了null对象。 这是为什么? 再次 – 如何获取用户将填写j_password字段的密码。 以下是我的代码: web.xml中 Frontend contextConfigLocation classpath:applicationContext.xml org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG /WEB-INF/configs/tiles-resources.xml springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter actionPackages fe.web.actions struts2 /* org.springframework.web.context.request.RequestContextListener org.springframework.web.context.ContextLoaderListener org.apache.tiles.web.startup.TilesListener org.springframework.security.web.session.HttpSessionEventPublisher 弹簧security.xml文件 UserAuthenticator package fe.security; import java.util.Collection; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; public […]

如何通过Java swing执行cmd命令

我有一个要打印的文件,我想通过java swing向他发送自定义水印。 我有2个文件NewJFrame.java和Test.java package test; import java.io.IOException; import java.io.OutputStream; /** * * @author shaharnakash */ public class NewJFrame extends javax.swing.JFrame { /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The […]

java.lang.NoClassDefFoundError:HttpSessionListener

我正在尝试部署一个我没写过的战争,我在日志中收到此错误: java.lang.NoClassDefFoundError: HttpSessionListener 我知道HttpSessionListener位于tomcat(我的app服务器)的lib目录中的servlet-api.jar中。 我尝试在war的WEB-INF / lib文件夹中包含servlet-api.jar,但是日志对我这样说: INFO: validateJarFile(/home/test/apache-tomcat-6.0.18/webapps/test/WEB-INF/lib/servlet-api.jar) – jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 互联网声称你不必在你的lib文件夹中包含该类。 编辑:我从web.xml中删除了有问题的侦听器(导致上述问题)因为它看起来不是很重要。 这揭示了更多的错误: java.lang.Error: Unresolved compilation problem: The type javax.servlet.FilterChain cannot be resolved. It is indirectly referenced from required .class files 我错过了什么?