enhydraboy

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

前两个星期,公司的事太多。只能偷闲整理一点,终于今天有了个初步的成果。
jmsn robots(Version 1.0.0)使用说明

1 特性说明
  (1) 支持启动多个机器人
  (2) 提供简单的数据库连接池,考虑到机器人需要同时为多个用户服务,数据库访问需要池化
  (3) 一个工作线程池,同时有多个用户和机器人对话,需要提高并发的响应能力,同时又不能无限制的开启新的线程,导致系统资源被消耗光
  (4) 自己开发响应内容程序

2 运行环境
  需要 jre 1.4.1.2以上
3 安装及目录基本说明
  [bin]\run.bat运行。jmsn robots的classpath设置就在该文件中
  [lib]目录包括了,必要的运行库。msnm1-2-0b2.jar就是jmsnlib库,我修改了源代码,添加了定时ping notification sever的功能,解决了nat设备会自动cut 空闲的连接,导致机器人自己下线。 
  [config]目录,存放了配置文件。robots.xml是机器人的配置文件,不用多说,大家一看就明白了。cn_pool.xml是数据库连接池的配置文件,主要是为了你自己开发的机器人对话处理程序时,需要访问数据库的时候用到,当然,你也可以自己用其他的连接池。cn_pool.sam是个例子。

4 配置文件说明
  (1) [bin]目录下的config.properties,请大家根据实际情况修改。目前参数很简单,说明如下:
 
  jmsn_robot_home=C:\\JMSNRobots-1.0.0-a   系统的主目录(请注意\\)
  connection_pool_enabled=false                        是否需要connection pool,如果设为true,就按照connection_pool_config_file文件读取配置
  thread_process=20                                           线程工作池的容量
  robot_config_file=robots.xml                            机器人配置文件
  connection_pool_config_file=cn_pool.xml         数据库连接池的配置文件
 
  (2) [config]目录下robots.xml机器人配置文件
      <JMSNRobot>
 <ROBOT id="1" loginname="" password="" robot_name=""  service="org.enhydraboy.msnrobots.SampleRobot"/>
      </JMSNRobot>
      大家一看就明白,就不用多说了
  (3) [config]目录下cn_pool.sam,很简单,一看就明白

5 如何开发自己的机器人内容处理程序
  (1) 开发内容处理代码

其实很简单,只需要继承一个接口就行了。这个接口是org.enhydraboy.jmsnrobot.develop.commandDispatcher。本系统会把接收到的消息,存放在一个MSNInputMessage的类当中,getMsgbody()就可以得到发送给你的消息内容,注意,消息内容是JAVA缺省的iso-8859编码的。getSender()可以得到发送者的email address。

下面是一段简单的代码

package org.enhydraboy.msnrobots;

import org.enhydraboy.jmsnrobot.develop.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class SampleRobot extends commandDispatcher {

  public SampleRobot() {
  }

  public String ProcessCommand(MSNInputMessage msg) {
    String ret="";
    if(msg.getMsgbody().toLowerCase().equals("hello")){
      ret="hello "+msg.getFriendlyName();
      ret=ret+"your email is "+msg.getSender();
    }
    return ret;
  }
}

(2) 部署。修改robots.xml,其中的service="org.enhydraboy.msnrobots.SampleRobot",大家应该明白了吧
(3) 连接池的使用。
    ConnectionFactory cf=ConnectionFactory.getInstance();
    DataSource  ds=null;
    try{
      ds=cf.lookup("Sybase");  //获得一个数据源
    }catch(Exception e){
      e.printStackTrace();
    }

    Connection conn=ds.getConnection(); //获得一个连接

    .....
    conn.close //交回连接池


这只是本人的兴趣,花了一点时间,整理了一下,主要为了方便大家编写自己msn机器人的方便

,同时感谢开放源码的jmsnlib类库,可以说,我只是在他的基础上,作了一小点工作而已。

大家可以同我联系。。。。
enhydraboy@yahoo.com.cn

2004

posted on 2004-06-08 11:38  Enhydraboy  阅读(3250)  评论(5编辑  收藏  举报