2017-11-03 11 views
2

몇 년 전에 독립형 Java 응용 프로그램에서 느린 Spring 구성 요소 스캔에 문제가있어서 stackoverflow에서 묻습니다. Slow spring component scan . 몇 년 뒤 나는이 문제에 대해 다시 비틀 거리며 왜 느린 지 알게되었다고 생각합니다. 그것은 jar 파일이 서명 되었기 때문입니다. 현재 우리 앱에는 약 170 개의 jar 파일이 있습니다. 우리 자신과 제 3 자. 우리는 모두 서명합니다. 일반적으로 webstart를 사용하며 구성 요소 검사의 성능은 정상입니다. "java -cp mainclass"를 수행하여 커다란 classpath로 애플리케이션을 시작하면 compoennt 스캔에 몇 분이 걸립니다. 모든 jar 파일 (서명 정보 만 포함)에서 MANIFEST.MF 파일을 제거하고 응용 프로그램을 다시 실행하면 웹 스타트 속도가 빠릅니다. 서명 확인에 많은 시간이 걸리는 것 같습니다. Java 콘솔에서 서명 검사를 비활성화하려고 시도했습니다. 효과가 없습니다. 여전히 느립니다. 자바 런타임 매개 변수가 있습니까?서명 된 Jar 파일의 스프링 구성 요소 스캔 (@Autowire)이 느립니다.

+0

슈퍼 빨리 있지만 응용 프로그램이 자바 9에서 Java Web Start를 천천히? (예 : Oracle 런타임, OpenJDK 빌드 ...) – Gimby

+0

표준입니다. 오라클 JDK 8u141과 나는 다른 것들 (Always std. Oracle)을 시도했다. 항상 같은 효과 – magicroomy

답변

0

현재 서명 된 uber-jar에 동일한 문제가 발생합니다. 자동 배선과 관련이 없지만 컨텍스트 구성 요소 검색과 관련이있을 수 있습니다. XML 구성에서도이 방법을 사용하고 있습니다. 나는 오래된 스프링 코어 인 ticket을 언급했다. 티켓은 으로 해결되었습니다. 해결 방법 : 수정 안 됨

구성 요소 검색을 제거하고 XML beans로 바꾸었지만 제대로 작동하는 것 같습니다. 인트로피 (org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean)를 사용하여 런타임에 생성 된 CXF 웹 서비스에 여전히 문제가 있습니다. 각 서비스는 약 2 분이 소요됩니다. 그러나 최소한 진전이있었습니다. 주목할만한 다른

뭔가 : 자바의 버전 및 공급 업체 : 그것은 완전성에 대해 1.8