Cómo acceder a la base de datos nsf en NOTA usando Java
Para obtener la base de datos correspondiente, la ruta de la base de datos debe ser relativa al archivo mtdata/mtstore.nsf en el directorio de Datos.
Si desea operar la base de datos del buzón del usuario songlb, debe especificar el directorio del archivo mail/songlb.nsf.
La siguiente es la estructura de datos y el significado de mtcstore.nsf
/**
* Interfaz de base de datos para leer datos de mtcstore.nsf
*
* @author songlb
*
* -----Estructura original:---.- 0DISPSTAT----- - [4.0] 1DISPTM------[2005-09-02 15:51:28 ZE8]
* 2MTA------[ULTRAPOWER/ULTRANMS] 3NEXTMTA----- - [`z] 4PREVMTA------[`z]
* 5NODELREA------[`z] 6MSGTM------[2005-09-02 15: 51 :23 ZE8]
* 7MSGSZ------[1544.0] 8UNQMSGID------[OF46892529:11E0D26D ON48257070:002B2802]
* 9INMSGID--- - --[OFFC2465D0.7ED6D035-ON4825706F.0029D02C-4825706F.002A36F1]
* 10OUTMSGID------[ OFFC2465D0.7ED6D035-ON4825706F.0029D02C-4825706F.00 2 A36F1]
* 11INORG------[Enrutador de correo] 12OUTORG------[Enrutador de correo]
* 13INRCP------[wanghp/ultranms@CHANGESELF]
* 14OUTRCP------[wanghp/ultranms@CHANGESELF] 15SUBJ------[prueba]
* 16MSGTYPE---- --[8.0] 17Form--- ---[($MTRESP)] 18NUMERICAS------[1.0]
* 19EARLIESTMSGTM------[2005-09-02 15:51:23 ZE8] 20LATESTMSGTM-- ----[2005- 09-02
* 15:51:23 ZE8] 21$Actualizado por------[CN=ultrapower/O=ultranms]
*
*
* =====Usando la estructura: ===== [remitente]:OUTORG [receptor].OUTRCP [título]:SUBJ
* [motivo]:NODELREA [estado]:DISPSTAT [hora]:LATESTMSGTM [msgid]:UNQMSGID
*
*
* p>
* Entre ellos: DISPSTAT: 1=desconocido 2=en cola 4=entregado 8=entrega_fallida
*
* 16=transferido
*
* 32=transferencia_fallida 64=grupo_ expandido 1073741824=eliminado
*
* MSGTYPE: 1=desconocido 2=memo 4=informe de entrega 8=informe de no entrega p >
* 16=devoluciónrecibo 3
2=phonemessage 64=tracereport 128=notice
*/
El siguiente es un programa de monitoreo que ejecuté después de iniciar el servicio MTC. Ahora no hay ningún entorno y no puedo garantizar que sea correcto. del programa, pero los principios se pueden aprender de todos.
Clase pública TraceMailDAO {
Usuario de cadena estática privada = "songlb";
Cadena estática privada passwd = "123456789";
static Logger log = Logger.getLogger("TraceMailDAO");
personas privadas de HashMap = new HashMap() // Colección de usuarios a rastrear
/**
* Obtenga la base de datos adecuada La ruta de la base de datos es relativa a mtdata/mtstore.nsf
* Obtenga los datos de la base de datos adecuada. nsf
*
* @param accessDB
* @return
* @throws NotesException
*
p>p>La base de datos pública estática getDB(String accessDB) lanza NotesException {
lotus.domino.Session s = lotus.domino.NotesFactory.createSession(
JDBCConstants.DOMINOHOST, usuario, contraseña);
log.info("Nombre de host del servidor Domino:" + s.getServerName() + "Número de versión:"
+ s.getNotesVersion ());
lotus.domino.Database db = s.getDatabase(null, accessDB);
if (!db.isOpen()) {
db.open();
}
// Ingrese el título y el tamaño de la base de datos
// //System.out.println(" título: ")+ db.getTitle() + " tamaño:" +
// db.getSize());
return db;
} p>
/**
* Los datos de la tabla alluser que se recuperan de la base de datos mcstore.nsf serán rebotados y filtrados por el sistema de enrutador de correo todos los días.
1. El programa solo recupera los correos electrónicos que fueron devueltos ese día todos los días
* 2. Obtiene los correos electrónicos de las personas rastreadas
*/
Público Lista getMTCDatas() {
ArrayList ls = new ArrayList();
prueba {
Base de datos db = TraceMailDAO.getDB(JDBCConstants.DB);// obtener base de datos
Ver vista = (Ver) db.getView(JDBCConstants.DBVIEW);//obtener la vista de CORREO que desea
Documento doc = view.getFirstDocument() ;
Vector columnNames = view.getColumns(); //obtener todos los nombres de las columnas
Nsfmail entidad = null;
boolean flag = false; p>
while (doc ! = null) {
entidad = new Nsfmail();
Valores vectoriales = doc.getColumnValues();
String tmp = null;
String tmpStr = "";
for (int j = 0; j < columnNames.size(); j++) {
String columnName = (( String) columnNames.elementAt(j)
.toString()).trim();
if (columnName.length() != 0) {
//log.info(values.get(j).getClass());
//ViewColumn column = (ViewColumn)
// columnNames.elementAt(j);
if ( columnName.equals("remitente")) {
if(values.get(j) instanciade Vector){
tmp = ((Vector ) valores.get(j)).toString();
/**
//1.
Asegúrese de que este sea un correo electrónico que fue rebotado por el sistema
*/
if (tmp.indexOf("Mail Router") > -1) {
} else {
//flag = false;
// break;
}
entidad.setSender(tmp);
p>}else{
tmp=(String) valores.get(j);
*//
*. get(j) ;
}
}
} else if (columnName.equals("receiver")) {
if (valores.get (j) instancia de Vector){
tmp = ((Vector) valores.get(j)).toString();
}else{
tmp =(String) valores.get(j);
}
/**
* //2.
Determinar si el usuario es el que debe ser rastreado
**
if (persons.containsKey(tmp)){
} else {
// bandera = false;
// break;
}
entity.setReceiver(tmp);
} else if (columnName.equals("title")) {
if(values.get(j) instancia de Vector){
tmp = ((Vector) value.get(j )) .toString();
}else{
tmp=(String) valores.get(j);
}
entidad .setTitle(tmp);
} else if (columnName.equals("reason")) {
if(values.get(j) instanciade Vector){ p>
tmp = ((Vector) valores.get(j)).toString();
}else{
tmp = (Cadena) valores.get(j
}
entity.setReason(tmp);
} else if (columnName.equals("status")) {
if( valores.get(j) instancia de Vector.get(j) instancia de Vector){
tmp = ((Vector) valores.get(j)).toString();
}else{
tmp=String.valueOf(values.get(j)) ;//El tipo simple es doble
}
/* *
* 3. Determine si el correo electrónico no se pudo enviar o enviar por correo
*/
if (tmp.indexOf(JDBCConstants.DELIVERY_FAILED) > -1
|| tmp
.indexOf(JDBCConstants.TRANSFER_FAILED) > -1) {
} más {
flag = false;
// break;
}
entity.setStatus(tmp);
} else if (columnName.equals("hora ")) {
tmpStr = String.valueOf((DateTime) valores.get(j));
tmpStr = tmpStr.substring(0, 19);
/**
* //4.
getTime();
//log.info("t1: "+t1);
//log.info("tD1: "+DateUtil.StringToDate(tmp)) ;
nowTime = rt[0] + " 23:59:59";
long t2 = DateUtil.StringToDate(nowTime).setTime(t3);
} else if (columnName.equals( "msgid")) {
if(values.get(j) instanciade Vector){
tmp = ((Vector) valores. get(j)).toString();
}else{
tmp=(String) valores.get(j);
}
entity.setMsgid(tmp);
}
}
if (bandera) {
ls.add( entidad);
log.info(" 888888")info(" 888888");
}
doc = view.getNextDocument(doc);
// }
System.out.println("");
}
} captura (lotus.domino. NotesException e ) {
e.printStackTrace();
} captura (Excepción ex) {
ex.printStackTrace();
}
return ls;
}
public static void main(String[] args) {
TraceMailDAO dao = new TraceMailDAO() ;
ArrayList ls=(ArrayList)dao.getMTCDatas( );
for(int i=0;i log.info(ls.get(i).toString()); } } } } }