小编MaD*_*aDa的帖子

如何限制侦听Jboss JMS队列的MDB实例的数量

我遇到以下设置问题:

Java应用程序将电子邮件msg发送到JMS队列,然后侦听队列的MDB使用onMessage方法获取电子邮件msg,它在Gmail SMTP上打开连接,将电子邮件发送到SMTP并关闭连接.对JMS队列中的所有消息执行此操作.

当我在队列中同时拥有最多5条消息时,它工作得很好.5个不同的MDB实例同时拾取所有邮件,因此我有5个并发连接到Gmail SMTP服务器.但是当JMS队列中有更多消息时,我从Gmail SMTP服务器收到连接错误.5个第一个消息是正确发送的,但不是其余的,所以其他消息丢失,因为它们不再在队列中.

所以我的问题是,是否可以限制将侦听JMS队列的MDB实例的数量?如果我最多有5个MDB,那么即使队列中有1000个消息,也只需要更长的时间来清空队列,但至少我不会丢失任何消息.

任何其他建议来解决这个问题将非常感谢.

这是Jboss版本:

[服务器]版本ID:JBoss [Trinity] 4.2.3.GA(build:SVNTag = JBoss_4_2_3_GA date = 200807181417)

MDB的配置如下:

@MessageDriven(activationConfig = {   
  @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue" ),   
  @ActivationConfigProperty( propertyName = "destination", propertyValue = "queue/emailQueue")  
})
Run Code Online (Sandbox Code Playgroud)

你需要更多吗?

谢谢

编辑2011-02-14
也许我想错误地限制MDB实例的数量.我看到了一个关于JMS线程数量的配置.如果我限制将发布到MDB的线程数,也许它会解决我的问题?在再次发布消息之前,JMS是否会等到MDB可用?这样做会有副作用吗?你虽然请.谢谢
结束编辑

jboss jms message-driven-bean ejb-3.0 jboss-4.2.x

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

初始化JPA实体getter中的字段是一种好习惯吗?

在POJO Java bean中,这样的代码可能是有益的,尤其是对于集合:

class POJO {
    private Collection<X> col;

    public Collection<X> getCol() {
        if (col == null)
           col = new SomeCollection<X>();

        return col;
    }
}
Run Code Online (Sandbox Code Playgroud)

它使代码可以POJOpojo.getCol().isEmpty()没有额外空值检查的情况下调用,从而使代码更清晰.

假设POJO该类是JPA实体,这样做是否仍然安全?通过将集合从null初始化为空的集合,持久性数据将不会被更改,但是,我们仍在修改对象,因此持久性提供程序可能会在刷新持久性上下文时产生一些副作用.我们有什么风险?便携性可能吗?

java jpa

15
推荐指数
2
解决办法
8023
查看次数

VBScript和Access MDB - 800A0E7A - "无法找到提供程序.可能未正确安装"

我在连接到访问MDB数据库的VBScript时遇到问题.我的平台是Vista64,但其中大部分资源都用于ASP/IIS7.

很简单,我无法连接它.我收到以下错误:800A0E7A - "无法找到提供程序.可能未正确安装"

我的代码是:

Set conn = CreateObject("ADODB.Connection")
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.MDB"
conn.Open strConnect
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经运行了%WINDIR%\ System32\odbcad32.exe来尝试在32位模式下配置驱动程序,但它还没有完成.任何建议将不胜感激

作为一个补充,我试图让这个.vbs脚本通过双击运行,并让它做它的事情.此代码未嵌入到另一个lang /脚本中.

oledb vbscript ms-access adodb

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

如何从Java代码中禁用log4j日志记录

我使用一个使用log4j写日志的旧库.我的默认log4j.properties文件将日志定向到控制台,但在我的主程序的某些特定功能中,我想完全禁用日志记录(来自所有类).

我试过这个:

Logger.getLogger(BasicImplementation.class.getName()).setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)

其中"BasicImplementation"是执行日志记录的主要类之一,但它不起作用 - 日志仍然写入控制台.

这是我的log4j.properties:

log4j.rootLogger=warn, stdout
log4j.logger.ac.biu.nlp.nlp.engineml=info, logfile
log4j.logger.org.BIU.utils.logging.ExperimentLogger=warn

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n

log4j.appender.logfile = ac.biu.nlp.nlp.log.BackupOlderFileAppender
log4j.appender.logfile.append=false
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = %-5p %d{HH:mm:ss} [%t]: %m%n
log4j.appender.logfile.File = logfile.log
Run Code Online (Sandbox Code Playgroud)

java log4j

13
推荐指数
3
解决办法
5万
查看次数

加载HTML5视频时如何制作加载图片?

因为视频播放器需要时间来加载mp4视频.HTML5是否支持在加载视频时播放"加载"徽标?

在此输入图像描述

因为我的asp.net应用程序是一个移动页面,它需要用户点击视频才能播放视频(android,iphone不支持自动播放).这样我就不能将"加载"标识作为海报,否则,用户会对此感到困惑.我想在用户点击iPad上的播放按钮时显示加载徽标.

谢谢

html video video-streaming

13
推荐指数
3
解决办法
4万
查看次数

为什么"git fetch origin branch:branch"仅适用于非当前分支?

在处理功能分支时,我使用此Git命令将我的"develop"分支更新为最新状态,在将我的功能分支与"develop"合并之前:

git fetch origin develop:develop
Run Code Online (Sandbox Code Playgroud)

这是有效的,即本地"开发"指向与"原点/开发"相同的提交,并且处于最新的起源状态.

不知何故,当检查"develop"分支时,此命令失败:

fatal: Refusing to fetch into current branch refs/heads/develop of non-bare repository
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

如果我知道为什么会发生这种情况,那将有助于我更好地理解Git.

git

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

Ms-Access:任何需要具有可变长度文本字段的小尺寸

在Ms-Access MDB中,它是否会节省磁盘空间以限制可变长度文本字段的大小?

例如.如果我有一个可变长度的Text字段大小,20并且该字段的所有实际值都在10字符下,那么我是否在浪费空间?

将字段的大小设置为10或者没有任何区别会更好吗?

ms-access database-design field

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

如果url模式匹配多个servlet怎么办?

<servlet-mapping>
  <servlet-name> s1</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name> s2</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name> s3</servlet-name>
  <url-pattern> /* </url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

如果请求/ abc到来,将调用哪个servlet?为什么?

java web.xml servlets java-ee

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

Maven插件可以自动从"执行"部分看到"配置"标签吗?

我正在分析我可以在以下configuration部分内配置的Maven插件plugin:

<plugin>
     ...
     <executions>...</executions>
     <configuration>
         <!-- items placed here are visible to the MOJO -->
     </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

该插件完全忽略了一个配置项execution,但是:

<plugin>
     ...
     <executions>
         <execution>
             <id>execution1</id>
             <phase>test</phase>
             <goals><goal>test</goal></goals>
             <configuration>
                <!-- items placed here are ignored -->
             </configuration>
         </execution>
     </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我和Maven一起跑mvn test.我确信执行发生,因为Maven id正确打印,但插件未配置 - 打印有关在<configuration>移出部分时不存在的错误设置的警告<executions>.

问题是:它是插件实现的方式,它只接受"顶级"配置吗?我研究了它的源代码,在我看来,它是Maven在MOJO类上调用setter而且它对插件是透明的,选项来自哪个部分.

MOJO注释为:

* @component
* @goal test
* @phase test
* @execute phase="jasmine-process-test-resources"
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven jasmine-maven-plugin

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

Confluence宏用于指定参考,报价来源等?

在Confluence中是否有一种方法可以指定对文本段落的引用 - 例如,以与维基百科上类似的方式提供引用文本的来源,以便它像这样呈现:

Lorem ipsum dolor坐下来1

[下页]


1西塞罗

理想情况下,下标"1"应该是内部超链接

confluence

10
推荐指数
2
解决办法
8579
查看次数