본문 바로가기

에러

spark 1.6 => 2.1 update 시 서브릿 API 에러

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.




기존 사용했던 [servlet-api 3.0] - Spark 1.6.x


 

 커넥션용, 처리용 자원이 있음

 커넥션용 자원 : 여러 서블릿 컨테이너가 NIO를 사용해서 효율적으로 작업

 처리용 쓰레드 : DB 요청이나, 웹 서비스 요청을 했을 때 대기하게 되는데,  서블릿 3.0의 비동기 기능을 활용해서 절약

처리용 쓰레드를 계속 대기 상태로 유지(동기)하는게 아니라, 처리용 쓰레드는 대기해야 하는 리소스를 요청하고 회수했다가, 리소스가 다시 가용해졌을 때 처리를 이어감





[에러 내용]



Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/Servlet
    at org.apache.spark.ui.WebUI.attachPage(WebUI.scala:81)
    at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:65)
    at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:65)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
    at org.apache.spark.ui.WebUI.attachTab(WebUI.scala:65)
    at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:66)
    at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:82)
    at org.apache.spark.ui.SparkUI$.create(SparkUI.scala:220)
    at org.apache.spark.ui.SparkUI$.createLiveUI(SparkUI.scala:162)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:452)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at com.odin.hadoopsparkmongo.SparkStreaming.streaming_setting(SparkStreaming.java:72)
    at com.odin.hadoopsparkmongo.SparkStreaming.<init>(SparkStreaming.java:65)
    at com.odin.main.App.main(App.java:34)
Caused by: java.lang.ClassNotFoundException: javax.servlet.Servlet
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

    ... 15 more

 




Maven Dependency 변경


<dependency>

            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version> => <version>4.0.0-b03</version>
            <scope>provided</scope>

</dependency>