2014-06-26 130 views
4

我使用spring引导创建了一个FAQ。它需要部署到tomcat 6服务器(servlet 2.5)。我需要配置当前的父Java应用程序(war)web.xml,以将所有请求指向url模式“/ faq/*”,例如我的spring启动常见问题应用程序。我已经将FAQ.jar文件复制到父应用程序的lib文件夹中。但我不知道如何在父应用程序的web.xml中配置/注册spring引导servlet和servlet映射。如何将Spring Boot应用程序部署到Tomcat 6 Servlet 2.5

使用spring boot legacy样本..我将我的spring引导应用程序与依赖关系jar文件一起放在父应用程序li​​b文件夹中。我将这个代码块添加到父应用程序的web.xml中。

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>faq.Application</param-value> 
</context-param> 

    <listener> 
     <listener-class> 
      org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener 
     </listener-class> 
    </listener> 

    <filter> 
     <filter-name>metricFilter</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

<filter-mapping> 
    <filter-name>metricFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>SpringServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextAttribute</param-name> 
     <param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>SpringServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

但是当我启动Tomcat时,我碰到下面的错误。

二零一四年六月三十零日上午12时17分23秒org.apache.catalina.core.StandardContext listenerStart 严重:异常发送上下文初始化事件监听器类org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener的实例 java.lang.IllegalAccessError:尝试访问方法org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(Ljava/lang/Class; Ljava/lang/ClassLoader;)Ljava/util/List;从类org.springframework.boot.SpringApplication 在org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:355) 处org.springframework org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:346) .boot.SpringApplication.initialize(SpringApplication.java:222) at org.springframework.boot.SpringApplication。(SpringApplication.java:198) at org.springframework.boot.builder.SpringApplicationBuilder。(SpringApplicationBuilder.java:83) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)01 org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener.initWebApplicationContext(SpringBootContextLoaderListener.java:48) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) at org.apache.catalina.util。 LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:897) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:873) 在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 在org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1095) 在org.apache.catalina.startup。 HostConfig $ DeployDirectory.run(HostConfig.java:1617) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.jav a:441) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent。 ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Jun 30 2014年上午12时17分23秒org.apache.catalina.core.StandardContext startInternal 严重:错误listenerStart

KevyKev

回答

1

春天启动不支持Servlet 2.5正式,但它并不德e很多,使其工作。您可能会觉得这很有用:https://github.com/scratches/spring-boot-legacy。在这里示例:https://github.com/scratches/spring-boot-sample-gae

+0

感谢您的回复......使用spring boot legacy示例,更改父应用的web.xml文件并将我的启动应用放在lib文件夹中。但是,当我启动Tomcat时,出现以下错误:SEVERE:异常将上下文初始化事件发送到类的监听器实例org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener java.lang.IllegalAccessError:尝试访问方法org .springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(Ljava /郎/类; Ljava /郎/类加载器;)Ljava/util的/列表;从类org.springframework.boot.SpringApplication – user3780135

+0

看起来像一个类路径问题可能?检查您的WEB-INF/lib和旧版本容器中的任何共享库。或者你的容器中有一个SecurityManager? –

+0

所以我必须将我的spring启动应用程序(FAQ.jar)的每个依赖项jar添加到父应用程序的lib文件夹中?随着应用程序本身? – user3780135

相关问题