1

私は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ファイル

私のバンドル情報は

ここに画像の説明を入力

このエラーに関するアイデアはありますか?

4

0 に答える 0