簡體   English   中英

使用Karaf在OSGI上部署簡單的Spring Web應用程序

[英]Deployment of simple Spring web application on OSGI with Karaf

我正在嘗試在OSGI-Karaf 3.0.1上運行一個簡單的Spring Web應用程序,但沒有結果。

在我的新Karaf實例上,我安裝了以下功能:

  • 春天4.0.2.RELEASE_1
  • spring-web 4.0.2.RELEASE_1
  • pax-http 3.0.1
  • 戰爭3.0.1
  • 戰爭3.0.1
  • pax-jetty 8.1.14.v20131031

這是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>co.chudy.kairos</groupId>
<artifactId>spring-web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring-web Maven Webapp</name>

<properties>
    <spring.version>4.0.2.RELEASE</spring.version>
    <jdk.version>1.7</jdk.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.osgi</groupId>
        <artifactId>spring-osgi-web</artifactId>
        <version>1.2.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <finalName>spring-web</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.5.0</version>
            <extensions>true</extensions>
            <executions>
                <execution>
                    <id>bundle-manifest</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>manifest</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <supportedProjectTypes>
                    <supportedProjectType>war</supportedProjectType>
                    <supportedProjectType>bundle</supportedProjectType>
                    <supportedProjectType>jar</supportedProjectType>
                </supportedProjectTypes>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-Vendor>Michal Chudy</Bundle-Vendor>
                    <Export-Package>co.chudy.kairos.spring</Export-Package>
                    <Web-ContextPath>kairos</Web-ContextPath>
                    <Bundle-ClassPath>.,WEB-INF/classes,{maven-dependencies}</Bundle-ClassPath>
                    <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
                </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

web.xml中

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     id="WebApp_ID" version="3.0">
<display-name>HelloWorldSpring</display-name>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

MVC-調度-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation=" http://www.springframework.org/schema/beans
                     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                     http://www.springframework.org/schema/context
                     http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<bean name="/helloWorld.do" class="co.chudy.kairos.spring.Home"/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

而且我嘗試了很多事情並進行了很多搜索,但仍然有關於缺少上下文類的堆棧跟蹤。 我嘗試了不同的web.xml和servlet配置,並且每次都遇到相同的錯誤-缺少類。 我還嘗試了不同版本的spring功能。

這是stacktrace :( 完整的karaf日志

    2014-07-26 15:49:28,119 | INFO  | raf-3.0.1/deploy | fileinstall                      | 11 - org.apache.felix.fileinstall - 3.2.8 | Updated D:\apache-karaf-3.0.1\deploy\spring-web.war
2014-07-26 15:49:28,439 | INFO  | raf-3.0.1/deploy | HttpServiceFactoryImpl           | 93 - org.ops4j.pax.web.pax-web-runtime - 3.1.0 | Binding bundle: [spring-web [210]] to http service
2014-07-26 15:49:28,445 | INFO  | raf-3.0.1/deploy | fileinstall                      | 11 - org.apache.felix.fileinstall - 3.2.8 | Started bundle: file:/D:/apache-karaf-3.0.1/deploy/spring-web.war
2014-07-26 15:49:28,502 | INFO  | pool-13-thread-1 | AppHttpContext{spring-web - 210} | 84 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.14.v20131031 | Initializing Spring FrameworkServlet 'mvc-dispatcher'
2014-07-26 15:49:28,502 | INFO  | pool-13-thread-1 | DispatcherServlet                | 212 - org.apache.servicemix.bundles.spring-webmvc - 4.0.2.RELEASE_1 | FrameworkServlet 'mvc-dispatcher': initialization started
2014-07-26 15:49:28,503 | INFO  | pool-13-thread-1 | XmlWebApplicationContext         | 207 - org.apache.servicemix.bundles.spring-context - 4.0.2.RELEASE_1 | Refreshing WebApplicationContext for namespace 'mvc-dispatcher-servlet': startup date [Sat Jul 26 15:49:28 CEST 2014]; root of context hierarchy
2014-07-26 15:49:28,504 | INFO  | pool-13-thread-1 | XmlBeanDefinitionReader          | 205 - org.apache.servicemix.bundles.spring-beans - 4.0.2.RELEASE_1 | Loading XML bean definitions from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]
2014-07-26 15:49:28,526 | ERROR | pool-13-thread-1 | DispatcherServlet                | 212 - org.apache.servicemix.bundles.spring-webmvc - 4.0.2.RELEASE_1 | Context initialization failed
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.view.InternalResourceViewResolver] for bean with name 'viewResolver' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.view.InternalResourceViewResolver not found by org.ops4j.pax.web.pax-web-jetty [94]
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1327)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:594)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1396)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:959)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:680)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)[207:org.apache.servicemix.bundles.spring-context:4.0.2.RELEASE_1]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)[207:org.apache.servicemix.bundles.spring-context:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at javax.servlet.GenericServlet.init(GenericServlet.java:161)[79:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0]
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doStart(HttpServiceContext.java:222)[94:org.ops4j.pax.web.pax-web-jetty:3.1.0]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.start(JettyServerImpl.java:197)[94:org.ops4j.pax.web.pax-web-jetty:3.1.0]
    at org.ops4j.pax.web.service.internal.HttpServiceStarted.end(HttpServiceStarted.java:1032)[93:org.ops4j.pax.web.pax-web-runtime:3.1.0]
    at org.ops4j.pax.web.service.internal.HttpServiceProxy.end(HttpServiceProxy.java:422)[93:org.ops4j.pax.web.pax-web-runtime:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.end(RegisterWebAppVisitorWC.java:341)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:678)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.register(WebAppPublisher.java:237)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:182)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:135)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:864)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)[karaf-org.osgi.core.jar:]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:101)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebObserver.deploy(WebObserver.java:213)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebObserver$1.doStart(WebObserver.java:175)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.extender.SimpleExtension.start(SimpleExtension.java:58)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender$1.run(AbstractExtender.java:266)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_55]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_55]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_55]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_55]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_55]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_55]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_55]
Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.view.InternalResourceViewResolver not found by org.ops4j.pax.web.pax-web-jetty [94]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)[org.apache.felix.framework-4.2.1.jar:]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_55]
    at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1844)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:937)[org.apache.felix.framework-4.2.1.jar:]
    at org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)[85:org.ops4j.pax.swissbox.core:1.6.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)[:1.7.0_55]
    at org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)[85:org.ops4j.pax.swissbox.core:1.6.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_55]
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:236)[203:org.apache.servicemix.bundles.spring-core:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:392)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1348)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1319)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    ... 47 more
2014-07-26 15:49:28,528 | WARN  | pool-13-thread-1 | AppHttpContext{spring-web - 210} | 84 - org.eclipse.jetty.aggregate.jetty-all-server - 8.1.14.v20131031 | unavailable
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.web.servlet.view.InternalResourceViewResolver] for bean with name 'viewResolver' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.web.servlet.view.InternalResourceViewResolver not found by org.ops4j.pax.web.pax-web-jetty [94]
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1327)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:594)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1396)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:959)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:680)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)[207:org.apache.servicemix.bundles.spring-context:4.0.2.RELEASE_1]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)[207:org.apache.servicemix.bundles.spring-context:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:624)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:672)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:543)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)[212:org.apache.servicemix.bundles.spring-webmvc:4.0.2.RELEASE_1]
    at javax.servlet.GenericServlet.init(GenericServlet.java:161)[79:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0]
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:532)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doStart(HttpServiceContext.java:222)[94:org.ops4j.pax.web.pax-web-jetty:3.1.0]
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)[84:org.eclipse.jetty.aggregate.jetty-all-server:8.1.14.v20131031]
    at org.ops4j.pax.web.service.jetty.internal.JettyServerImpl$1.start(JettyServerImpl.java:197)[94:org.ops4j.pax.web.pax-web-jetty:3.1.0]
    at org.ops4j.pax.web.service.internal.HttpServiceStarted.end(HttpServiceStarted.java:1032)[93:org.ops4j.pax.web.pax-web-runtime:3.1.0]
    at org.ops4j.pax.web.service.internal.HttpServiceProxy.end(HttpServiceProxy.java:422)[93:org.ops4j.pax.web.pax-web-runtime:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.RegisterWebAppVisitorWC.end(RegisterWebAppVisitorWC.java:341)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.model.WebApp.accept(WebApp.java:678)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.register(WebAppPublisher.java:237)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:182)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher$WebAppDependencyListener.addingService(WebAppPublisher.java:135)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:864)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:317)[karaf-org.osgi.core.jar:]
    at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261)[karaf-org.osgi.core.jar:]
    at org.ops4j.pax.web.extender.war.internal.WebAppPublisher.publish(WebAppPublisher.java:101)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebObserver.deploy(WebObserver.java:213)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.WebObserver$1.doStart(WebObserver.java:175)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.extender.SimpleExtension.start(SimpleExtension.java:58)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at org.ops4j.pax.web.extender.war.internal.extender.AbstractExtender$1.run(AbstractExtender.java:266)[136:org.ops4j.pax.web.pax-web-extender-war:3.1.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)[:1.7.0_55]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_55]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)[:1.7.0_55]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)[:1.7.0_55]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_55]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_55]
    at java.lang.Thread.run(Thread.java:745)[:1.7.0_55]
Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.view.InternalResourceViewResolver not found by org.ops4j.pax.web.pax-web-jetty [94]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)[org.apache.felix.framework-4.2.1.jar:]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_55]
    at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1844)[org.apache.felix.framework-4.2.1.jar:]
    at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:937)[org.apache.felix.framework-4.2.1.jar:]
    at org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176)[85:org.ops4j.pax.swissbox.core:1.6.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)[:1.7.0_55]
    at org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192)[85:org.ops4j.pax.swissbox.core:1.6.0]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_55]
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:236)[203:org.apache.servicemix.bundles.spring-core:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:392)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1348)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1319)[205:org.apache.servicemix.bundles.spring-beans:4.0.2.RELEASE_1]
    ... 47 more

但是有時候,缺少的類是OsgiBundleXmlWebApplicationContextContextNamespaceHandler

有什么想法我做錯了嗎?

您還將需要安裝Spring-DM並為其使用OsgiBundleXmlWebApplicationContext。 可以在此處找到示例。
簡而言之,您需要在web.xml中切換到以下內容:

<context-param>
    <param-name>contextClass</param-name>
    <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
</context-param>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
    </init-param>
</servlet>

如果可以將Spring WebMVC設置限制為一個捆綁包並且僅使用其他捆綁包中的服務,可以查看[1]。 關於如何使用帶有Jetty 9.2和JSP / JSTL的Eclipse Equinox(OSGi),EclipseLink(JPA)和Spring WebMVC的方法[2]。

[1] http://dentrassi.de/2014/11/14/osgi-ee-modular-web-applications/

[2] https://github.com/ctron/osgiee/tree/master/web5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM