Java 智能代理如何使用数据库?
我正在使用JADE framework,我想知道智能代理是否可以使用某种数据库,从中读取和写入一些信息 我试图在excel(使用jxl)和我的项目之间建立连接,但存在一个问题:以下是在excel文件中编写的代码:Java 智能代理如何使用数据库?,java,database,javaagents,agents-jade,multi-agent,Java,Database,Javaagents,Agents Jade,Multi Agent,我正在使用JADE framework,我想知道智能代理是否可以使用某种数据库,从中读取和写入一些信息 我试图在excel(使用jxl)和我的项目之间建立连接,但存在一个问题:以下是在excel文件中编写的代码: public static void write(String[] args) throws Exception { // TODO code application logic here File f = new File("C:\\Users\\Mastisa\\D
public static void write(String[] args) throws Exception {
// TODO code application logic here
File f = new File("C:\\Users\\Mastisa\\Desktop\\Master.xls");
WritableWorkbook Master = Workbook.createWorkbook(f);
WritableSheet History_Table = Master.createSheet("History_Table", 0);
Label L00 = new Label (0,0,"RUN#");
History_Table.addCell(L00);
Master.write();
System.out.println("finished...");
Master.close();
}
}
但我想让特工们做这样的事情:
Database D;
D.add(myAgent.getLocalName);
但这是不可能的,因为jxl不提供与代理一起工作的功能。看起来一切都必须手动写入excel文件。。。。但这不是我想要的。。我想让特工们舒服地读写
还有其他方法吗?是的,基本上,当您创建JADE代理时,您可以向这些代理添加行为, 有几种类型的行为,您应该根据自己的需求选择它们。您可以找到行为列表 比如,
public class MyAgent extends Agent
{
@Override
protected void setup()
{
addBehaviour( new InformBehaviour() );
}
private class InformBehaviour extends CyclicBehaviour
{
//dostuff
}
}
所以基本的想法是你们需要在一个代理的行为中完成所有这些
确保您选择了符合您要求的正确行为。谢谢,因此我们得出结论,JADE本身并没有为使用专门数据库的代理提供工具?正确。JADE没有内置设施来满足数据库和/或其他传出请求。JADE主要用于代理平台,专门处理代理之间的请求。但是,你可以将你的应用程序与spring框架集成,然后你就可以拥有那种很酷的数据库连接。这不是JADE的职责,但Spring具有所有这些功能。但是,将JADE和Spring集成在一起并不是一件简单的事情,也不是说您可以在Spring上下文中添加一个JADE容器。因此,如果你选择这条路径,无论如何你必须有一个自定义的集成。您好,我有一个关于使用行为的问题:据我所知,我们不能为代理定义一个方法,我们只覆盖抽象的行为方法,是真的吗?如果是这样,那么如何使用jade行为处理excel这样的数据库?因为创建excel文件需要处理异常,而我无法写入:
public void action()引发异常
,因为我收到一条错误消息:重写的方法不会引发异常。。。。你能帮我吗?嗨,“我们不能为代理定义方法”这不是真的。您可以在自定义代理类中定义任何方法,如我的答案所示。例如,您可以使用public void writeToDB()或类似的东西。“我不能写:public void action()抛出异常”这是正确的,因为action方法已经在behavior类中,并且在其抽象定义中没有抛出异常。您提出的问题太广泛,无法在这里讨论。无论如何,从非代理类的另一个类调用代理实例上的方法是不可取的,也没有意义。因此,请以“代理方式”来考虑这一点,以便代理有自己的行为,并通过消息进行通信。不直接调用代理实例的方法。在这种情况下,行为方法非常有用,它是向代理添加功能的方法。不仅仅是在代理上调用一个方法。这不是一个好的做法。是的,请随时要求澄清。