Я разоблачаю bean-компонент, который не является потокобезопасным через http-invoker Spring. Я хочу, чтобы каждый удаленный вызов получал новый экземпляр компонента. Я начал с установки рамки для прототипа для компонента, который я размещаю в XML-сервлет диспетчера. Но, похоже, он создал только один экземпляр. Таким образом, все клиентские потоки одновременно обращались к одному экземпляру компонента.Spring http invoker, bean scope не почитается?
Далее я также установил scopr для прототипа для HttpInvokerProxyFactoryBean в client spring-config.xml. Но даже тогда я вижу один экземпляр возвращаемого компонента.
Любые идеи о том, что я делаю неправильно? Или кто-то еще столкнулся с этой проблемой.
Заранее благодарен.
Вот соответствующие фрагменты
DispatcherServlet-servlet.xml
<bean id="fuBeanImpl" class="com.fubar.FuBeanImpl" scope="prototype">
</bean>
<bean id="fuBeanService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="fuBeanImpl"/>
<property name="serviceInterface" value="com.fubar.FuBean"/>
</bean>
весна-config.xml
<bean id="fuBeanService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean" scope="prototype">
<property name="serviceUrl">
<value>http://fubar/fuBeanService</value>
</property>
<property name="serviceInterface">
<value>com.fubar.FuBean</value>
</property>
<property name="httpInvokerRequestExecutor">
<bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
</property>
</bean>
Спасибо skaffman. Да, HttpInvokerServiceExporter ссылается на org.springframework.web.servlet.handler.SimpleUrlHandlerMapping для сопоставления пути контекста сервлета диспетчера. Это означает, что все бобы в цепочке должны быть прототипами. – golfradio
@golfradio: Неправда. См. Отредактированный ответ. – skaffman