小编sko*_*ski的帖子

暂停 MDB 消息处理,直到 @StartupBean 完成初始化

在将 JBoss 5 应用程序迁移到 JBoss AS 7 (7.1.1.FINAL) 时,我遇到了新的 JMS 消息驱动的 EJB 问题。在消息处理中,必须检查一些主数据字段。为提高性能,应使用@Singleton @StartupEJB将此主数据预加载到缓存结构中,加载数据需要大约 30 秒。

我的问题是,即使缓存尚未完全初始化,队列消息处理也会启动,从而导致消息验证错误。

我试图定义 MDB 和启动 EJB 之间的依赖关系,但据我所知,@DependsOn注释仅适用于@SingletonEJB。所以很明显我的解决方案不起作用;-)

启动bean代码:

@Singleton
@Startup
public class StartupBean {

    @PostConstruct
    void atStartup() {
        // TODO load master data cache (takes about 30 seconds)
    }

    @PreDestroy()
    void atShutdown() {
        // TODO free master data cache
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:我从示例中删除了真正的代码,以便于阅读:-)

消息驱动bean代码:

@MessageDriven(name="SampleMessagingBean", activationConfig = {
        @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
        @ActivationConfigProperty(propertyName="destination", propertyValue="jms/SampleQueue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")
    })
    @DependsOn("StartupBean") …
Run Code Online (Sandbox Code Playgroud)

ejb-3.1 jboss7.x

5
推荐指数
1
解决办法
4530
查看次数

无法创建从独立Java应用程序到JBoss AS 7消息队列的JMS连接

我已经使用standalone-full.xml配置文件配置了在JBoss AS 7.1.1.FINAL上运行的JMS队列.

然后我编写了一个独立的 Java程序来连接队列并根据JBoss示例代码发送消息.

public class RemoteProducer {

    private static final Logger log = Logger.getLogger(RemoteProducer.class.getName());

    // Set up all the default values
    private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory";
    private static final String DEFAULT_DESTINATION = "jms/queue/test";
    private static final String DEFAULT_USERNAME = "jmstest";
    private static final String DEFAULT_PASSWORD = "fluppy";
    private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";
    private static final String PROVIDER_URL = "remote://localhost:4447";

    /**
     * @param args
     */
    public static void main(String[] args) {
        ConnectionFactory …
Run Code Online (Sandbox Code Playgroud)

jms jboss7.x

5
推荐指数
1
解决办法
7464
查看次数

标签 统计

jboss7.x ×2

ejb-3.1 ×1

jms ×1