Мое приложение требует нескольких реализаций интерфейса, которые требуют, чтобы сервер Jetty выполнял свою работу. Это, однако, не обязательно имеет место в каждой реализации этих интерфейсов, поэтому сервер Jetty является только зависимостью.Инъекция зависимостей: Jetty 7
Поскольку было бы огромной болью, чтобы обернуть весь сервер причала со всеми его конфигурациями протоколирования, коннектора и обработчика, я хочу, чтобы сервер был добавлен к этим реализациям с помощью Spring. Я решил, что инъекция класса Server не является хорошей идеей, поскольку реализация может остановить сервер, даже если он необходим в другом месте. В настоящее время я добавляю пустые классы HandlerList
к этим реализациям, и они регистрируют свои обработчики, чтобы избежать этих проблем.
Проблема: эти обработчики могут вмешиваться в работу других обработчиков, например: реализация может регистрировать обработчик для/foo, а реализация - тоже ... проблема. Кто-нибудь использовал Jetty в такой среде? И как решить эту проблему?
Мой XML прояснить мою проблему:
<bean id="jetty" class="org.eclipse.jetty.server.Server" destroy-method="stop">
<property name="connectors">
<list>
<bean class="org.eclipse.jetty.server.bio.SocketConnector">
<property name="host" value="10.8.0.46" />
<property name="port" value="9999" />
</bean>
</list>
</property>
<property name="handler">
<bean class="org.eclipse.jetty.server.handler.HandlerCollection">
<property name="handlers">
<list>
<ref bean="jetty.handlerList" />
<bean class="org.eclipse.jetty.server.handler.RequestLogHandler">
<property name="requestLog">
<bean class="org.eclipse.jetty.server.NCSARequestLog">
<constructor-arg value="${jetty.logfile}" />
<property name="extended" value="false"/>
</bean>
</property>
</bean>
</list>
</property>
</bean>
</property>
<property name="sendServerVersion" value="false" />
</bean>
<bean id="jetty.handlerList" class="org.eclipse.jetty.server.handler.HandlerList" />
Если я требую пустой HandlerList
я использую что-то вроде этого, где com.example.myapp.util.ioc.CreateHandlerListFactory
является org.springframework.beans.factory.FactoryBean
, который создает новый HandlerList
в пределах данного HandlerList
.
<constructor-arg>
<bean class="com.example.myapp.util.ioc.CreateHandlerListFactory">
<constructor-arg ref="jetty.handlerList"/>
</bean>
</constructor-arg>