使用 Domain Events 不成功

准备使用 jdon 异步 Domain Events 模式。发现不成功。贴出代码,请老大们指点一二。
Model:
@Model
public class CoderProperty
{
int id;
String first;
String second;
String third;
String last;
int maxLenth;
int maxSize;
@Inject
DomainEvent de ;
boolean isNew = true;// 是否已经更新
。。。。。忽略掉get/set方法
/**
* 计算下一个缓冲自增长量的最大值
*/
public void compute()
{
int current = Integer.parseInt(getLast());
int temp = Double.valueOf(Math.pow(10, getMaxLenth())).intValue();
this.setLast(String.valueOf(current + temp + getMaxSize()).substring(1));
setNew(false);
}

/**
* 修改编码器信息
*/
public void update()
{
compute();
de.updateCoderProperty(this);
}


/**
* @return the de
*/
public DomainEvent getDe()
{
return de;
}

/**
* @param de the de to set
*/
public void setDe(DomainEvent de)
{
this.de = de;
}
}

DomainEvent
@Introduce("message")
public class DomainEvent
{
/**
* 异步修改编码器信息
* @param cp
* @return
*/
@Send("modifyCoderProperty")
public DomainMessage updateCoderProperty(CoderProperty cp)
{
return new DomainMessage(cp);
}
}

components

@Component("modifyCoderProperty")
public class ModifyCoderProperty implements MessageListener
{
CoderDao cd;
/**
* 执行编码器属性修改工作
* @see com.jdon.domain.message.MessageListeneraction(com.jdon.domain.message.DomainMessage)
*/
public void action(DomainMessage arg0)
{
CoderProperty cp = (CoderProperty) arg0.getEventSource();
cd.updBean(cp);
cp.setNew(true);
}

}

当我调用model中的update方法时,发现被注入进去的domainevent为null,导致无法继续执行,请老大给看看是不是我哪写错了。
[该贴被lhcli于2010-07-15 16:37修改过]

模型类要被jdon的aop包装一下的,不然是要抛空指针,包装可以通过service的get,或者那个环绕拦截注释,你可以看我的那个源码。

oojdon:
我来jdon不长,可以告诉我你说的那个源码是哪个吗?或者给我发一份,lhc_li@126.com 非常感谢

非常感谢,我发现问题所在了,不是我写的有问题,而是我调用的时候有问题。
我原来使用构造方法默认注入,好像是不行的。现在改为用形如:
CoderService cs = (CoderService) WebAppUtil.getService(
"coderService", request);
CoderProperty cp = cs.getCoderProperty(1);
cp.update();
调用,就可以成功执行。
但是我现在有个其他的问题,因为,这个service是要内部来使用的,而在内部使用时,没有request对象,不知道,这种情况下如果来调用service。

2010年07月15日 23:34 "lhcli"的内容
没有request对象,不知道,这种情况下如果来调用service。 ...

最新版提供无request的getService功能了

2010年07月16日 08:17 "banq"的内容
最新版提供无request的getService功能了 ...

banq老师:
不知道您指的最新版是不是6.2.3,我现在用的是6.2.3版本。找了下WebAppUtil的方法,没有发现单独能通过name来的到service。还请老师明示。
另外,我还有一个疑问:就是我在使 异步DomainEvent模式的时候,发现:如果在debug模式下 注入model中的DomainEvent对象时没有问题的,但是我在运行模式下 发下 被注入的DomainEvent对象为null。这个我不是很了解,还请老师给解释一下,关于代码,就是我贴这篇帖子的最顶端的代码,谢谢!

如果通过构造函数直接注入service的一个service类中,为使得到的对象能够实现模型注入,必须在获取该模型对象的dao层的getmodel方法增加@Around注解,并且在该dao类的类构造函数增加@Introduce注解,也就是使用jdon的域缓存功能,通过启用域缓存,才能让拦截器拦截到dao的方法
将需要的注入对象注入

请看
http://www.jdon.com/jivejdon/thread/39078