Red de conocimiento informático - Material del sitio web - Cómo acceder a la base de datos nsf en NOTA usando Java

Cómo acceder a la base de datos nsf en NOTA usando Java

Primero, debemos tener en cuenta:

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

*

*

*

* 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

* 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;

}

/**

* 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;

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){

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());

}

}

}

}

}