Jetty服务器中的嵌入式Web应用程序中的Spring范围

时间:2016-04-12 15:49:49

标签: spring jetty embedded-jetty

我将Jetty配置为从spring上下文启动web应用程序,e.i。有两种情况:

  • 运行Jetty的外部环境
  • 内部由Spring DispatcherServlet运行

以下是外部背景的定义:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

 <bean id="servletHolder" class="org.eclipse.jetty.servlet.ServletHolder">
    <constructor-arg name="name" value="dispatcher"/>
    <constructor-arg name="servlet" value="org.springframework.web.servlet.DispatcherServlet"/>
    <property name="initParameters">
        <map>
            <entry key="contextConfigLocation" value="classpath:dispatcher-context.xml"/>
        </map>
    </property>
    <property name="initOrder" value="0"/>
 </bean>

 <bean id="servletHandler" class="org.eclipse.jetty.servlet.ServletHandler">
    <property name="servlets">
        <array>
            <ref bean="servletHolder"/>
        </array>
    </property>
    <property name="servletMappings">
        <list>
            <bean class="org.eclipse.jetty.servlet.ServletMapping">
                <property name="servletName" value="dispatcher"/>
                <property name="pathSpec" value="/*"/>
            </bean>
        </list>
    </property>
 </bean>

 <bean id="contextHandler" class="org.eclipse.jetty.servlet.ServletContextHandler">
    <property name="contextPath" value="/spring"/>
    <property name="servletHandler" ref="servletHandler"/>
 </bean>


 <bean class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
    <constructor-arg name="port" value="9999"/>
    <property name="handler" ref="contextHandler"/>
 </bean>

</beans>

它指的是dispatcher-context.xml是“内部”。 到目前为止它工作正常,除非我需要从外部上下文中将bean从内部上下文注入到控制器的bean中。

有没有办法在外部作用域中定义bean并将其注入控制器? 它可用于单元测试或将此服务器用作更大的现有应用程序的一部分。

完整代码可在此处找到:https://github.com/zjor/embedded-jetty/tree/master/spring-mvc-jetty

1 个答案:

答案 0 :(得分:0)

到目前为止,我找到了一个解决方法,我使用了Jersey和Jetty的组合,并通过Spring配置了所有内容。

此处提供代码:https://github.com/zjor/embedded-jetty/tree/master/jersey-jetty