【问题标题】:BouncyCastle causing scan timeout in SpringMVCBouncyCastle 在 SpringMVC 中导致扫描超时
【发布时间】:2016-10-31 08:45:23
【问题描述】:

我在 Jetty 9.2.10.v20150310 中运行 SpringMVC 应用程序没有问题。 但是,一旦我添加了对 BouncyCastle 的依赖项,扫描就会永远进行并且服务器会超时。

我在项目中只有一个 BouncyCastle 依赖项

     <!-- bouncy castle -->
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.54</version>
    </dependency>

依赖树确认:

mvn dependency:tree -Dincludes=org.bouncycastle

产生:

[INFO] Building application-myapp 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------        ------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ application-myapp ---
[INFO] com.my-company:application-myapp:war:1.0.0-SNAPSHOT
[INFO] \- org.bouncycastle:bcpkix-jdk15on:jar:1.54:compile
[INFO]    \- org.bouncycastle:bcprov-jdk15on:jar:1.54:compile
[INFO] ------------------------------------------------------------------    ------
[INFO] BUILD SUCCESS

有人看过这个吗?

注意:我也尝试使用最新的 Jetty 版本 9.3.10.v20160621,结果相同

当我使用 -X 运行 mvn:jetty 进程时,我发现它陷入了一个扫描 BouncyCastle jar 的长循环中,基本上看到这样的输出大约两分钟:

[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SHA3Digest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SHA512Digest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SHA512tDigest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SHAKEDigest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SM3Digest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/ShortenedDigest.class
[DEBUG] Scanning class from jar jar:file:///C:/Users/vgrazi/.m2/org/bouncycastle/bcprov-jdk15on/1.54/bcprov-jdk15on-1.54.jar!/org/bouncycastle/crypto/digests/SkeinDigest.class
[DEBUG] Closing JarFile C:\Users\vgrazi\.m2\org\bouncycastle\bcprov-jdk15on\1.54\bcprov-jdk15on-1.54.jar
[DEBUG] Closing JarFile C:\Users\vgrazi\.m2\org\bouncycastle\bcprov-jdk15on\1.54\bcprov-jdk15on-1.54.jar
[DEBUG] Closing JarFile C:\Users\vgrazi\.m2\org\bouncycastle\bcprov-jdk15on\1.54\bcprov-jdk15on-1.54.jar

【问题讨论】:

  • 尝试获取线程转储以查看卡住的位置。
  • 我很确定这是组件扫描,基于其他帖子

标签: spring maven spring-mvc jetty bouncycastle


【解决方案1】:

我们通过从 jetty-maven-plugin 中删除 bouncycastle jar 来实现这一点。请注意 webInfIncludeJarPattern 中的“排除”bouncycastle 前瞻正则表达式:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>${jetty.version}</version>
  <configuration combine.self="override">
      . . .
      <webApp>
        <contextPath>${jetty.context}</contextPath>
          <webInfIncludeJarPattern>^((?!bouncycastle).)*$</webInfIncludeJarPattern>
      </webApp>
      <jettyConfig>${jetty.xml}</jettyConfig>
       . . .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多