我在java中构建了一个邮件服务器,并且我已经提供了一个用AOP编写的ObserverProtocol。我正在使用带有AspectJ插件的Eclipse
我尝试使用像aspectOf这样的静态方法,我应该在编织步骤中添加我应该理解的方法
Eclipse似乎无法使其正常工作,因为我总是收到以下错误:
描述资源路径位置类型 方法aspectOf()未定义类型ObserverProtocol MailReaderBean.java / emailClent_test / src / emailserver第86行Java问题
根据我的理解,窥探各种网站,教程和文档,似乎我的.aj文件没有正确编织
我尝试用ajc手动编译无济于事,我用各种方式修改了路径和设置以及jar和libs,似乎没有任何工作,我似乎无法找到明确的指南或教程来正确设置< / p>
我的方面代码:
package protocol;
import java.util.WeakHashMap;
import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;
public abstract aspect ObserverProtocol
{
protected interface Subject { }
protected interface Observer { }
private WeakHashMap perSubjectObservers;
protected List getObservers(Subject s)
{
if (perSubjectObservers == null)
{
perSubjectObservers = new WeakHashMap();
}
List observers = (List)perSubjectObservers.get(s);
if ( observers == null )
{
observers = new LinkedList();
perSubjectObservers.put(s, observers);
}
return observers;
}
public void addObserver(Subject s, Observer o)
{
getObservers(s).add(o);
}
public void removeObserver(Subject s, Observer o)
{
getObservers(s).remove(o);
}
protected abstract pointcut subjectChange(Subject s);
after(Subject s): subjectChange(s)
{
Iterator iter = getObservers(s).iterator();
while ( iter.hasNext() )
{
updateObserver(s, ((Observer)iter.next()));
}
}
protected abstract void updateObserver(Subject s, Observer o);
public static ObserverProtocol aspectOf() {
// TODO Auto-generated method stub
return this;
}
}
我的java服务器中的违规代码
//Add observer Proxy for monitoring the subject MailServer.
ObserverProtocol.aspectOf().addObserver(this, proxy );
是否有任何资源可以帮助我了解编织的工作原理以及如何在不使用Spring或Maven的情况下设置构建?
答案 0 :(得分:2)
在编织过程中添加此方法(和hasAspect()
)。如果你的方面是使用javac
而不是ajc
构建的,那么当jvm启动时它将没有这些方法,因为织工还没有运行。
我建议你阅读这些文件: