(2)Teaeher类该类代表系统中的TP,负责为TP设置JXTA环境以及建立到MP的通信连接,并完成在学习系统中教师的功能。主要方法有:启动 JXTA环境startJXTA(),发现教务对等节点在线状态discoverManagerPipeAdv(),创建连接到MP的管道 createManagerPipes()、发布TP节点的在线状态pub-lishTeacherPipeAdv(),创建发送会话消息到MP的通信通道createTeaeherInputPipe()、MP确认TP发送的答案accept()、创建新会话requestNewSession()、读取TP的输入getUserRe-sponse()、获取TP对MP的响应sendToManager()、问题信息处理processMessage ()、获取对等节点问传输信息中的文本字符串getElementValue()、建立与MP节点的连接connectMan-ager()、断开与MP 节点之间的连接disconnectManager()、请求一个新会话run()和运行主方法main()等。另外,Teacher类的main()方法中还定义一个InputPipeMsgListener类实现PipeMsgListener接口来获得管道中的消息。
(3)Student类该类代表系统中的SP,负责为SP设置JXTA环境以及建立与TP的通信连接,并完成在学习系统中学生的功能。主要方法有:启动JXTA环境 startJXTA(),发现教师对等节点在线状态discoverTeacherPipeAdv(),创建连接到,TP的管道 createTeacherPipes()、发布SP节点的在线状态publishStudentPipeAdv(),创建发送问题答案到TP的通信通道 createStudentInputPipe()、TP确认SP发送的答案accept()、创建新会话requestNewSession()、读取 SP的输入getUserRe-sponse()、获取SP对TP的响应sendToTeacher()、问题信息处理processMessage ()、获取对等节点间传输信息中的文本字符串getElementValue()、建立与TP节点的连接connectTeacher()、断开与TP节点之间的连接disconnectTeacher()、请求一个新会话run()和运行主方法main()等。
(4)Agent类该类负责收集问题和答案,对学生对等节点收集的答案进行评估响应,并在“问题——答案”会话结束后根据该学生的回答给出相应的学习建议。主要方法有:问题和答案集合创建initProblems(),获得发送问题的总数get-TotalNumberOf Questions(),为SP提供下一个问题get-NextProblem(),处理答案processAnswer(),接收最后一个答案 getLastAnswer()、判断问题是否结束hasMoreProblems(),获得正确答案总数getTotalAnswersCorrect ()和获得学习建议getSuggestions()等。此外,Agent类还定义了一个Problem类。这个类使用了三个方法:获得特定问题编号的 getNumber()方法、获得问题内容的getQuestion()方法和获得问题答案的getAnswer()方法。
(5)AgentFactory类 该类主要负责创建Agent对象。主要方法有:获得Agent对象(getAgent)。系统开发完成后,进行了各种功能测试,证明该系统均能顺利完成工作。
4 结束语
JXTA项目使得P2P应用程序的开发者能将一个应用程序中与P2P相关的特定功能交给JXTA去实现,大大提高了P2P应用程序的开发效率。
同时,由于JXTA是一个开放源代码项目,可以根据自己的需要进行适当修改,使得所开发的应用程序具有高可扩展性。与传统的分布式系统相比,P2P与JXTA技术具有无可比拟的优势,将它们引入远程教育应用系统开发有着广阔的应用前景。
这里在分析了JXTA的体系结构及核心协议后,利用JXTA技术设计和开发了一个简单的并且具有可扩展、互操作性强及高可用性的P2P远程学习系统。通过该系统,学生可以更充分更有效地利用远程教学过程中的共享资料进行自主学习,更加方便学生和教师之间的交流,提高学生的学习积极性,促进学生学习成绩的提高;同时也有利于教师在教育过程中角色的转变,使教师从课堂主讲人转向学生学习的组织者和指导者,帮助辅导学生进行自主学习,提高学生的学习水平。