Atmosphere サーブレットを使用したテスト WebSocket アプリケーションでは、次の例外が発生します。
SEVERE: Servlet.service() for servlet AtmosphereServlet threw exception
java.lang.ClassNotFoundException: javax.servlet.AsyncContext
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:191)
at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:177)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
以下の投稿から、これは Servlet 3.0 よりも古い Servlet コンテナーのバージョンが原因である可能性があることを理解しています。
ClassNotFoundException: Jetty hello world の javax.servlet.AsyncContext
ClassNotFoundException: eclipse の Jetty hello world の javax.servlet.AsyncContext
Grails プロジェクト - サーブレット呼び出し - ClassNotFoundException: javax.servlet.AsyncContext
ただし、アプリケーションは Tomcat7 で実行されており、次の依存関係が pom.xml に追加されています。
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
プロジェクト内の他のすべての依存関係を確認しましたが、サーブレットに関連するものは他に見つかりませんでした。それでも例外が発生します。
質問:アプリケーションで実際に使用されている jar ファイルを見つけるにはどうすればよいですか? 古いバージョンの使用を引き起こしている依存関係を見つける方法は?