私はOSGIベースのSpring MVCアプリケーションを開発しています。バンドルのデプロイにはKarafを使用しています。私の春の MVC アプリケーションは war ファイルです。バンドル ファイルを deploy ディレクトリに配置しました
karaf@root()> web:list
ID | 状態 | Web 状態 | レベル | Web-ContextPath | 名前
125 | アクティブ | 配備済み | 80 | /サンプル | tomcat サンプル (0) 168 | アクティブ | 配備済み | 80 | /spring-kalees-mvc-ホスト | spring-kalees-mvc-host (0.0.1.SNAPSHOT)
私はサーブレットを持っています(バンドルを確認するため)、その他はSpringです
Url: http://*a****t:8181/spring-kalees-mvc-host/hello (サーブレット マッピング)は問題なく動作します が、Url : http://*a*****t:8181/ spring-kalees-mvc-host/osgi/osgi.htm (Spring ベースのコントローラー)が機能しない
次のようなエラーをスローしています。
HTTP エラー 503
/spring-kalees-mvc-host/osgi/saySomething へのアクセスに問題があります。理由:
org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'contextClass'; nested exception is java.lang.IllegalArgumentException: Cannot find class [org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext]
Caused by:
org.eclipse.jetty.servlet.ServletHolder$1: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Class' for property 'contextClass'; nested exception is java.lang.IllegalArgumentException: Cannot find class [org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext]
at org.eclipse.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:483)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:537)
at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:402)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:642)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
at org.ops4j.pax.web.service.internal.WelcomeFilesFilter.doFilter(WelcomeFilesFilter.java:192)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
In karaf log file, There was a error entry like below :
org.ops4j.pax.web.pax-web-extender-war - 3.0.0.M3 | Registration exception. Skipping.
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener not found by org.danielsoft.learn.spring-kalees-mvc-host [167]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)[org.apache.felix.framework-4.0.3.jar:]
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)[org.apache.felix.framework-4.0.3.jar:]
at
のようにクラスパスを指定しました
<classpath>WEB-INF/lib,WEB-INF/lib/org.springframework.context-3.2.2.RELEASE.jar,WEB-INF/lib/org.springframework.context.support-3.2.2.RELEASE.jar,WEB-INF/classes/,.</classpath>
そして、libファイル(WEB-INF/lib)で圧縮されたwarファイル
私のバンドル情報は
このエラーに関するアイデアはありますか?