2015-03-02 31 views
3

我想在項目中一起使用春季啓動1.1.5和Apache的火花1.0.2。看起來像Apache Spark在內部使用Jetty容器,並且我配置了spring-boot以使用Tomcat容器。但是,由於根本原因,應用程序啓動失敗並出現一些securityException如果我看到完整的堆棧跟蹤看起來像春季啓動試圖初始化「jettyEmbeddedServletContainerFactory」,它不應該放在第一位。它可能會從類路徑中拾取它,因爲通過火花存在碼頭存在。如果我從spark中排除jetty並再次運行,我不會再看到相同的錯誤,但是由於未找到jetty,SparkContext初始化失敗。我如何告訴spring-boot運行時查找「TomcatEmbeddedServletContainerFactory」而不是jetty?春季啓動和Apache的火花 - 容器衝突

+0

可能希望在您看到的內容中包含完整的堆棧跟蹤。還有一些如何配置火花和彈簧的例子。 – 2015-03-02 22:07:19

回答

3

@Joakim Erdfelt,謝謝。
我只是在等待,看看是否有人熟悉這種情況,以及它是否只是一個小的配置更改。事實證明這是!

@Configuration
@EnableAutoConfiguration(排除= {} EmbeddedServletContainerFactory.class)
公共類MyConfiguration {}


我定義我自己的 「EmbeddedServletContainerFactory」 bean作爲「org.springframework.boot.context.embedded .tomcat.TomcatEmbeddedServletContaine rFactory「並開始按我的預期工作。

8

我「java.lang.SecurityException異常:類‘javax.servlet.http.HttpSessionIdListener’的簽名者信息不匹配在同一包中其它類的簽名者信息」

要解決這個問題,我是需要刪除所有javax.servlet依賴關係。

<dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <version>1.3.1</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.servlet</groupId> 
       <artifactId>javax.servlet-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.glassfish</groupId> 
       <artifactId>javax.servlet</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.eclipse.jetty.orbit</groupId> 
       <artifactId>javax.servlet</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
+0

謝謝!這解決了許多小時的時間尋找答案。 – 2017-09-12 02:11:30