标签: jboss-mdb

glassfish中的Java Heap Space错误

我正在使用一个新的Glassfish安装,只需很少的自定义.

我有一个消息驱动Bean(ObjectUpdateMDB),它监听一个主题,然后更新它在数据库中收到的对象.有很多对象正在更新.经过一段时间的运行后,我得到了这个例外:

SEVERE: JTS5031: Exception [org.omg.CORBA.INTERNAL:   vmcid: 0x0  minor code: 0 completed: Maybe] on Resource [rollback] operation.
SEVERE: MDB00049: Message-driven bean [Persistence:ObjectUpdateMDB]: Exception in postinvoke : [javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL:   vmcid: 0x0  minor code: 0 completed: Maybe] on Resource [rollback] operation.  vmcid: 0x0  minor code: 0  completed: No]
SEVERE: javax.transaction.SystemException
javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL:   vmcid: 0x0  minor code: 0 completed: Maybe] on Resource [rollback] operation.  vmcid: 0x0  minor code: 0  completed: No
    at com.sun.jts.jta.TransactionManagerImpl.rollback(TransactionManagerImpl.java:350)
    at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.rollback(J2EETransactionManagerImpl.java:1144)
    at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.rollback(J2EETransactionManagerOpt.java:426) …

java glassfish application-server out-of-memory jboss-mdb

9
推荐指数
2
解决办法
3万
查看次数

MDB注释的可​​配置值

我正在尝试使用此方法在EJB3应用程序中接收邮件.简而言之,这意味着使用以下注释创建MDB:

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "mailServer", propertyValue = "imap.company.com"),
    @ActivationConfigProperty(propertyName = "mailFolder", propertyValue = "INBOX"),
    @ActivationConfigProperty(propertyName = "storeProtocol", propertyValue = "imap"),
    @ActivationConfigProperty(propertyName = "debug", propertyValue = "false"),
    @ActivationConfigProperty(propertyName = "userName", propertyValue = "username"),
    @ActivationConfigProperty(propertyName = "password", propertyValue = "pass") })
@ResourceAdapter("mail-ra.rar")
@Name("mailMessageBean")
public class MailMessageBean implements MailListener {
    public void onMessage(final Message msg) {
       ...snip...
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这个工作,但情况不太理想:主机名,用户名和密码是硬编码的.如果没有使用ant和build.properties在编译之前替换这些值,我不知道如何外化它们.

使用MBean是理想的,但我不知道如何从MBean获取值到MDB配置.

我该怎么做?

java annotations jboss-mdb ejb-3.0

8
推荐指数
1
解决办法
1万
查看次数

在MQ Series中配置"重试延迟"

我希望有人可以帮助我 - 我在基于EJB/JMS的应用程序中使用JBoss 5.1和MQ Series 7.我的应用程序中有几个消息驱动的bean,每个bean都在MQ Series消息队列上进行监听.当在处理消息期间遇到错误时,我需要能够配置"重试延迟",以便mq系列在尝试重新传递消息之前等待一段时间.我已经广泛地梳理了MQ系列文档,并且还没有找到在MQ系列中实现这一目标的方法.我知道JBoss默认的JMS提供程序有办法实现这一点,但我目前仅限于使用MQ Series.由于我无法设置重试延迟 - 当我的消息失败时,我的应用程序会陷入紧急循环,传递消息并不断回滚.任何人都可以帮助我理解MQ系列中是否有一些配置选项允许我在重新发送失败的消息之前等待X毫秒?

jms jboss-mdb ejb-3.0 ibm-mq

8
推荐指数
2
解决办法
3546
查看次数

在Java中动态创建异步消息队列

我需要在Java中动态创建异步消息队列.我的用例是通过多个SMTP服务器发送电子邮件:我需要按顺序强制执行相同SMTP服务器的电子邮件,但可以同时处理发送到不同SMTP服务器的电子邮件.我以前使用过JMS,但据我所知它只允许编译时队列创建,而我需要在运行时创建队列(每个SMTP服务器一个队列).

我是否遗漏了有关JMS的内容,或者是否有其他工具/建议我应该查看一下?

java asynchronous jms message-queue jboss-mdb

7
推荐指数
1
解决办法
8024
查看次数

消息传递(例如JMS)何时是多线程的替代方案?

我在一个数据处理应用程序上工作,通过在消息驱动bean(MDB)的多个实例监听的消息队列上放置几个工作单元来实现并发.除了以这种方式实现并发之外,我们没有任何具体的理由使用消息传递基础结构和MDB.

这让我想到为什么使用多线程无法实现同样的目标.

所以我的问题是,在什么情况下,异步消息传递(例如JMS)可以用作替代mutithreading作为实现并发的手段?使用一种方法比另一种方法有什么优点/缺点.

java multithreading jms message-passing jboss-mdb

6
推荐指数
2
解决办法
3605
查看次数

新的缺失/不满足的依赖项:服务jboss.ra.activemq-ra(缺失)依赖项

我按照这个链接并将ActiveMq 5.6与JBoss eap 6.3集成在一起.我想在我的poc项目中使用MDB.虽然战争部署成功,但onMessage()方法不会被解雇.

QueueName:employee_q

MDB,

package com.test.oms.mdb;

import java.util.logging.Logger;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import org.jboss.ejb3.annotation.ResourceAdapter;
import com.test.oms.entity.Employee;

@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue.employee_q") })
@ResourceAdapter("activemq-ra.rar")
public class QueueListener implements MessageListener {

    private final static Logger LOGGER = Logger.getLogger(QueueListener.class
            .toString());

    @Override
    public void onMessage(Message rcvMessage) {
        LOGGER.info("____________OnMessage fired______________");
        Employee emp = null;

        if (rcvMessage instanceof Employee) {
            emp = …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jboss-mdb ejb-3.1 jboss7.x

5
推荐指数
0
解决办法
4250
查看次数

消息驱动Bean选择器(JMS)

我最近发现了消息选择器

@ActivationConfigProperty(
        propertyName="messageSelector",
        propertyValue="Fragile IS TRUE")
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在运行时使选择器动态化?

让我们说消费者决定他们只想要属性为"Fragile IS FALSE"的消息

消费者可以在不重新部署MDB的情况下以某种方式更改选择器吗?

注意:我使用的是Glassfish v2.1

java jms java-ee jboss-mdb

4
推荐指数
1
解决办法
3195
查看次数

确保在OC4J群集中对JMS消息进行串行处理

我们有一个使用消息驱动bean处理JMS消息的应用程序.此应用程序部署在OC4J应用程序服务器上.(10.1.3)

我们计划在多个OC4J应用程序服务器上部署此应用程序,这些服务器将配置为在群集中运行.

问题在于此群集中的JMS消息处理.我们必须确保一次只在整个OC4J集群中处理单个消息.这是必需的,因为必须按时间顺序处理消息.

您是否知道可以控制跨OC4J集群的消息处理的配置参数?

或者您认为我们必须实现自己的同步代码,以便在群集中同步消息驱动的bean吗?

java jms oc4j jboss-mdb

4
推荐指数
1
解决办法
3020
查看次数

要重新传递到队列的JMS消息

我在我的应用程序中使用Jboss MQ.

我正在尝试处理重新传递给JMS队列的消息.有没有办法可以在消费者收到的原始消息中设置一些值(第一次收到消息)这样每当重新传递消息时,我都可以读取值并做出一些决定.

如果问题不明确,请告诉我,我可以尝试详细解释.

jboss jms jbossmq java-ee jboss-mdb

3
推荐指数
1
解决办法
1741
查看次数

Jboss 中创建了多少个消息驱动 Bean?

JBoss:6或7

问题1:

Jboss创建了多少个消息驱动 Bean 实例来处理消息?

问题2:

如何配置JBoss创建的消息驱动 Bean 的数量?

jboss ejb jboss-mdb

3
推荐指数
1
解决办法
3844
查看次数

如何使 MDB 激活规范上下文属性可配置?

在我们的项目中,我们正在使用一个 MDB 来侦听特定队列上的消息。它被定义为注释。

例子:

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20")})
Run Code Online (Sandbox Code Playgroud)

.

为了更改 maxSessions 的值,每次都必须编译代码。即使我在 ejb-jar.xml 中配置它而不是作为注释,我也需要编译代码并生成 EAR 文件。

有没有办法让它用户可配置(从属性文件中读取),以便不需要重新编译代码,只需将 maxSession 值更改为“30”并重新启动 jboss,它应该可以工作。

请帮忙。

参考代码:

@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "ABCQueue"),
@ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "20"),    @ActivationConfigProperty(propertyName="maxMessagesPerSessions",propertyValue="15")})
public class ABCMDB implements MessageListener
{
   ----------- 
}
Run Code Online (Sandbox Code Playgroud)

java jms jboss-mdb wildfly

2
推荐指数
1
解决办法
1584
查看次数

JMS消息驱动Bean工作器同步

我们刚刚开始构建我们的JMS体系结构并具有以下基本设置:

  1. GLassfish v2.1
  2. MDB通过TopicConnectionFactory监听主题(全部在本地服务器上)

现在,MDB在新消息到达时生成一个工作线程,即使我们按顺序传递消息,我们也需要一个同步机制,以便线程在同时处理请求之前检查某个条件.

这些线程有没有办法共享数据?或者我们可以用于同步的其他机制(数据库表/行锁除外)吗?

提前致谢.


为了澄清,我不是在创建自己的线程.正如每个人都正确指出的那样,容器就是为我做的.让我用一个例子帮助解释我的困境.

-Message A到达t = 0,'创建'数据id 1

- 消息B到达t = 0.1,其'更新'数据id 1

现在假设容器产生2个工人来处理A和B,并且"创建"数据比花费更多时间需要更多时间,更新将更早地处理并且不起作用.

为了更清楚,

- 处理消息B时,我会在t = 1时查找数据id 1(找不到它,因此没有做任何事情就完成了).

- 在t = 2处理消息A时将创建数据ID 1.

java jms jboss-mdb

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

JBoss MQ教程

我正在寻找一个JBoss MQ教程(在JBoss工具上),这样我就可以编写一个MDB和一个客户端.我只能找到JBoss Messaging.

java jboss ejb java-ee jboss-mdb

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