Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 智能代理如何使用数据库?_Java_Database_Javaagents_Agents Jade_Multi Agent - Fatal编程技术网

Java 智能代理如何使用数据库?

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

我正在使用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\\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类中,并且在其抽象定义中没有抛出异常。您提出的问题太广泛,无法在这里讨论。无论如何,从非代理类的另一个类调用代理实例上的方法是不可取的,也没有意义。因此,请以“代理方式”来考虑这一点,以便代理有自己的行为,并通过消息进行通信。不直接调用代理实例的方法。在这种情况下,行为方法非常有用,它是向代理添加功能的方法。不仅仅是在代理上调用一个方法。这不是一个好的做法。是的,请随时要求澄清。