Mon application nécessite plusieurs implémentations d'interface qui nécessitent un serveur Jetty pour faire leur travail. Ceci n'est cependant pas forcément le cas dans toutes les implémentations de ces interfaces, de sorte que le serveur Jetty n'est qu'une dépendance.Injection de dépendances: Jetty 7
Puisqu'il serait très pénible d'enrouler tout le serveur jetée avec toutes ses configurations de journalisation, de connecteur et de gestionnaire, je veux injecter le serveur dans ces implémentations avec Spring. J'ai décidé qu'injecter la classe Server n'est pas une bonne idée car une implémentation pourrait arrêter le serveur même si c'est nécessaire à un autre endroit. Actuellement j'injecte HandlerList
classes vides à ces implémentations et ils enregistrent leurs gestionnaires pour éviter ces problèmes. Le problème: Ces gestionnaires peuvent interférer avec d'autres gestionnaires par exemple: l'implémentation peut enregistrer un gestionnaire pour/foo et l'implémentation deux aussi ... problème. Quelqu'un at-il utilisé Jetty dans un tel environnement? Et comment ce problème pourrait-il être résolu?
Mon XML pour clarifier mon problème:
<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" />
Si je requiers un vide HandlerList
J'utilise quelque chose comme ça où com.example.myapp.util.ioc.CreateHandlerListFactory
est un org.springframework.beans.factory.FactoryBean
qui crée une nouvelle HandlerList
au sein de la donnée HandlerList
.
<constructor-arg>
<bean class="com.example.myapp.util.ioc.CreateHandlerListFactory">
<constructor-arg ref="jetty.handlerList"/>
</bean>
</constructor-arg>