Java 如何共享有状态bean?

Java 如何共享有状态bean?,java,spring,threadpool,connection-pooling,Java,Spring,Threadpool,Connection Pooling,我在独立环境上使用Spring3.1 我有一个场景,我正在创建编程原型bean 每个bean都有自己的状态。(它们是有状态的,具有唯一的id等等) 创建bean之后,我将它连接到一个主题(实际上是通过DLMC) 发送到主题的每条消息都包含一个特定的id(主题的使用者之一) 延迟和吞吐量对我来说非常重要 所以,如果我向一个特定的bean发送大量的消息,我会在每条消息之间产生荒谬的延迟,因为这个bean非常忙,并且在完成当前任务之前它不会空闲 所以我认为每次我第一次创建同一个bean时,我都需要创建

我在独立环境上使用Spring3.1

我有一个场景,我正在创建编程原型bean

每个bean都有自己的状态。(它们是有状态的,具有唯一的id等等)

创建bean之后,我将它连接到一个主题(实际上是通过DLMC)

发送到主题的每条消息都包含一个特定的id(主题的使用者之一)

延迟和吞吐量对我来说非常重要

所以,如果我向一个特定的bean发送大量的消息,我会在每条消息之间产生荒谬的延迟,因为这个bean非常忙,并且在完成当前任务之前它不会空闲

所以我认为每次我第一次创建同一个bean时,我都需要创建它的池来避免这种情况

有什么办法可以做到吗?也许有一个高层次的解决方案

我以务实的方式创建这些spring MDB:

java代码:

MyMdb myMdb= (MyMdb) beanFactory.getBean("MyMdb", id);
和xml:

<bean id="fixSessionMDB" class="com.finbird.fixgw.core.mdb.FixSessionMDB"
    scope="prototype" lazy-init="true">
    <constructor-arg ref="0" />
    <constructor-arg ref="0" />
</bean>

您没有提供太多的实现细节,但请查看以下代码片段:

<bean id="uniqueConsumerTarget" scope="prototype" lazy-init="true"/>

<bean id="uniqueConsumer" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetSource">
        <bean class="org.springframework.aop.target.CommonsPoolTargetSource">
            <property name="targetClass" value="com.example.UniqueConsumer"/>
            <property name="targetBeanName" value="uniqueConsumerTarget"/>
            <property name="maxSize" value="10"/>
            <property name="maxWait" value="5000"/>
        </bean>
    </property>
</bean>

这个代码非常聪明。每次您请求
“uniqueConsumer”
bean时,Spring实际上会返回一些动态代理,用于拦截所有调用。一旦您尝试在该bean上执行任何方法,Spring将从池中获取一个实例(或创建一个新实例)并转发给它


“maxSize”
“maxWait”
参数是自描述性的,用于微调池。

问题在于,我是以实用的方式创建这个原型bean的。我已经修改了我的问题。