使用消息驱动Bean时,在注释中硬编码接收消息的目标名称 @MessageDriven(mappedName = "someDestinationName")
有没有办法在运行时添加此信息?Bellow是Message Driven Bean类的示例.
package mdb.beans;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
@MessageDriven(mappedName = "someDestinationName", activationConfig =
{
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class MDBSample implements MessageListener
{
public MDBSample()
{
// constructor
}
@Override
public void onMessage(Message message)
{
// logic when message received
}
}
Run Code Online (Sandbox Code Playgroud) 我在最近的一次采访中遇到了这个问题:
你有一个范围内的输入数字流,0 to 60000你有一个函数,它将从该范围获取一个数字,并返回该数字的出现次数,直到那一刻.提供合适的数据结构/算法来实现该系统.
我的解决方案是:
创建一个大小为60001的数组,指向位向量.这些位向量将包含传入数字的计数,并且传入的数字也将用于索引相应数字的数组.随着计数变得太大而不能容纳它们,位向量将动态增加.
因此,如果数字100numbers/sec按此速率进行,则在1百万年内,总数将为= (100*3600*24)*365*1000000 = 3.2*10^15.在最坏的情况下,流中的所有数字都是相同的ceil((log(3.2*10^15) / log 2) )= 52bits,如果数字是均匀分布的(3.2*10^15) / 60001 = 5.33*10^10,那么每个数字的出现次数将需要36 bits每个数字的总数.因此,假设4byte指针我们需要(60001 * 4)/1024 = 234 KB数组的内存,对于具有相同数字的情况,我们需要位向量大小= 52/8 = 7.5 bytes仍然大约234KB.而对于另一种情况,我们需要(60001 * 36 / 8)/1024 = 263.7 KB位向量总计约500KB.因此,用普通的PC和内存来做这件事是非常可行的.
但是访问者说,因为它是无限的流,它最终会溢出并给我提示,如果有很多PC我们怎么能这样做,我们可以在它们之间传递消息或考虑文件系统等.但我一直在想是否这个解决方案当时没有工作,其他人也会这样.不用说,我没有得到这份工作.
如何用更少的内存来解决这个问题?你能想到另一种方法(使用PC网络)吗?
memory algorithm distributed-computing stream data-structures
我有一个onMessage方法,我从队列中恢复一个ObjectMessage并使用该信息来填充和持久化JPA实体对象.但是当持久化实体对象出现问题时,它会重新执行onMessage().我的猜测是它将ObjectMessage推回队列,因此onmessage再次被执行.这样我就进入了无限循环.如何停止onMessage()再次执行或控制执行的次数.这是我的代码.saveAuditData(auditInfo)发生错误.
public void onMessage(Message inMessage) {
log.debug("Entering onMessage() Method.");
AuditInfo auditInfo = null;
try {
ObjectMessage om = (ObjectMessage) inMessage;
auditInfo = (AuditInfo) om.getObject();
log.debug("Message received : " + auditInfo.getApiUsed());
log.debug("Calling saveAuditData().");
saveAuditData(auditInfo);
log.debug("Leaving onMessage() Method.");
}
catch (Exception e) {
e.printStackTrace();
log.debug("Error persisting Audit Info.",e);
log.debug("Printing Audit Info:");
log.debug(auditInfo.toString());
}
}
private void saveAuditData(AuditInfo auditInfo) {
log.debug("Entering saveAuditData() Method.");
log.debug("Populating Audit Object.");
IdmAudit idmAudit = new IdmAudit();
idmAudit.setApiUsed("API");
idmAudit.setAppClientIpAddress("localhost");
idmAudit.setAuditActivity("activity1");
idmAudit.setAuditData(auditInfo.getAuditData());
idmAudit.setAuditGroup(AUDIT_GROUP);
idmAudit.setAuditType("Type");
idmAudit.setIdmAuditCreationDate(new Date());
idmAudit.setLocationCd("Location");
idmAudit.setPurgeDate(null);
idmAudit.setSubscriberId(new BigDecimal(0)); …Run Code Online (Sandbox Code Playgroud) java transactions exception-handling rollback message-driven-bean
我是一名Java开发人员,我对C宏的语法不是很熟悉.我正在研究Deitel&Deitel的书,但它没有帮助.
我无法理解这个宏的含义:
#define _GetFrontItem(d,q) ( (d)->itemCache + ( (q)*(d)->block_size + \
(d)->offset[q] % (d)->block_size )*(d)->itemSize)
Run Code Online (Sandbox Code Playgroud)
d是指向结构的指针,q是一个size_t.
宏在此文件中使用.
你能帮我理解一下吗?这个宏完成了什么?为什么写它的方式?有没有更清晰的方法来编写这个宏?
我对HBase开发非常陌生。我正在跟踪链接。我正在使用Hbase-1.1.2版本。使用示例代码时,我会收到警告。不推荐使用几种方法(例如,新的HBaseAdmin(conf);)。我看到HBaseAdmin类具有3个构造函数。在3个构造函数中,有2个已弃用。只有一个接受“ ClusterConnection”作为参数的构造函数。我不知道我是否遵循正确的链接来使用HBase。可以使用最新的hbase库提供示例示例吗?我将HBase作为独立模式运行。
在Yesod脚手架项目中,我添加了一个新路由和一个新的处理程序.
我的错误如下:
29/Mar/2017:11:25:22 +0200 [Error#yesod-core] Foundation.hs:(137,5)-(144,45): Non-exhaustive patterns in function isAuthorized
@(yesod-core-1.4.32-6HthMZNCl0sEMRz6GJ4QO1:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:693:5)
29/Mar/2017:11:25:22 +0200 [Debug#SQL] SELECT `ident`,`password` FROM `user` WHERE `id`=? ; [PersistInt64 1]
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我有一个表单,我定义:
@Required
@Formats.DateTime(pattern="dd/MM/yyyy")
public Date mDate;
Run Code Online (Sandbox Code Playgroud)
现在我的模板我有:
@helper.inputDate(
myForm("mDate")
)
Run Code Online (Sandbox Code Playgroud)
但是当我提交表单时,我得到一个错误作为无效值.
请告知如何克服此错误.
谢谢aj
我有一个固定长度的流.我想将编码设置为Windows-1252或latin1.
我怎样才能做到这一点?
通过XML会更好,但如果代码是唯一的方式,它也可以.
我有一套财务文件(固定条款存款文件,信用卡文件).我想在这些文件中自动识别和标记金融实体/工具.
例如,如果文件中包含此短语,则"保留以利息偿还的权利,恕不另行通知".我想识别与之相关的财务条款,并用它标记,因为这句话是"可调用的".对于这个短语"允许提前提款",相关的财务条款是"可投放的",所以如果这个短语在文件中,我想用术语"Putable"标记它.
财务条款将来自金融业商业本体论.有没有可能为此目的使用斯坦福解析器?我可以将POS标签用于此目的吗?我可能需要用金融工具培训斯坦福大学的解析器,如果有可能我可以如何培训斯坦福大学的解析器来识别金融工具?
我得到了异常,org.hibernate.HibernateException: Errors in named queries: ElaborazionePagamentiMaggioriOneri.estrai但命名查询对我来说是正确的.我也明白了
org.hibernate.hql.ast.QuerySyntaxException: ElaborazionePagamentiMaggioriOneri is not mapped [FROM ElaborazionePagamentiMaggioriOneri e WHERE e.dataInizioLancio IS NULL AND e.dataFineLancio IS NULL AND e.distinta IS NULL]
Run Code Online (Sandbox Code Playgroud)
我的实体如下:
@Entity(name="ELABORAZIONE_PAGAMENTI")
@Table(name="ELABORAZIONE_PAGAMENTI")
@NamedQuery(name="ElaborazionePagamentiMaggioriOneri.estrai",
query="FROM ElaborazionePagamentiMaggioriOneri e WHERE e.dataInizioLancio IS NULL AND e.dataFineLancio IS NULL AND e.distinta IS NULL")
public class ElaborazionePagamentiMaggioriOneri {
@Id
@GeneratedValue
@Column(name="ID_ELABORAZIONE")
private long idElaborazione;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ID_INTERVALLO")
private Intervallo intervallo;
@Column(name="IMPORTO_MINIMO")
private BigDecimal importoMinimo;
@Column(name="IMPORTO_MASSIMO")
private BigDecimal importoMassimo;
@Column(name="LIMITE_DISPOSIZIONI")
private Long limiteDisposizioni;
@Column(name="DATA_INIZIO_LANCIO")
private Calendar dataInizioLancio;
@Column(name="DATA_FINE_LANCIO")
private …Run Code Online (Sandbox Code Playgroud)