2017-11-03 8 views
2

スタンドアロンJavaアプリケーションで遅いSpringコンポーネントスキャンで問題が発生したので、私はstackoverflowで尋ねました: Slow spring component scan 数年後、私はこの問題について再び遭遇し、なぜそれが遅いのかを知ったと思います。これは、jarファイルが署名されているためです。 現在、私たちのアプリには約170のjarファイルがあります。私たち自身と第三者。我々はそれらのすべてに署名する。 通常はwebstartを使用していますが、コンポーネントスキャンのパフォーマンスは問題ありません。 "java -cp mainclass"を実行するだけで膨大なクラスパスでアプリケーションを起動すると、コンパクトスキャンに数分かかります。 すべてのjarファイル(署名情報のみを含む)からMANIFEST.MFファイルを削除して、アプリケーションを再度実行すると、Webstartの速度が速くなります。 署名チェックにはかなりの時間がかかるようです。 JavaコンソールでSignature Scanを無効にしようとしました。無効。まだ遅いです。 Java実行時のパラメータはありますか?署名されたJarファイルのスプリングコンポーネントスキャン(@Autowire)が遅い

+0

と超高速ですが、アプリケーションがJava 9上にJava Web Startで遅いのですか? (例:Oracleランタイム、OpenJDKビルド、...) – Gimby

+0

これは標準です。 Oracle JDK 8u141と私は他のものを試しました(Always std。Oracle)。いつも同じ効果 – magicroomy

答えて

0

私は現在、署名されたユーバージャーと同じ問題が発生しています。自動配線とは関係ないかもしれませんが、XML構成でもこれを使用している場合には、コンテキスト・コンポーネントのスキャンが必要です。私は古いSpringのコアticketがそれを言及しているのを発見しました。チケットはで解決されました。解決策:修復されません。 ...

コンポーネントのスキャンを削除し、XML Beanに置き換えて動作しているようです。イントロスペクション(org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean)を使用して実行時に生成されるCXF Webサービスにはまだ問題があります。各サービスは、作成に約2分必要です。しかし、少なくともいくつかの進展があった。注目に値する他

何か:Javaのバージョンとベンダー:それは完全については1.8

関連する問題