在cmd窗口,输入到Notes的安装路径,输入3条命令:
nfixup xxxnsf -r
nupdall xxxnsf -RX
ncompact xxxnsf -c
58590632 Lotus技术交流群 飞天猪欢迎您
首先我们要注意:
要想得到相应的数据库, 数据库的路径必须是相对于Data目录下的 mtdata/mtstorensf文件。
如果你要 *** 作songlb这个用户的邮箱数据库那么就要指定mail/songlbnsf这个文件目录。
以下是mtcstorensf的数据结构及含义
/
读取mtcstorensf数据使用的数据库接口
@author songlb
-----原始结构:---- 0DISPSTAT------[40] 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------[15440] 8UNQMSGID------[OF46892529:11E0D26D ON48257070:002B2802]
9INMSGID------[OFFC2465D07ED6D035-ON4825706F0029D02C-4825706F002A36F1]
10OUTMSGID------[OFFC2465D07ED6D035-ON4825706F0029D02C-4825706F002A36F1]
11INORG------[Mail Router] 12OUTORG------[Mail Router]
13INRCP------[wanghp/ultranms@CHANGESELF]
14OUTRCP------[wanghp/ultranms@CHANGESELF] 15SUBJ------[test]
16MSGTYPE------[80] 17Form------[($MTRESP)] 18NUMENTRIES------[10]
19EARLIESTMSGTM------[2005-09-02 15:51:23 ZE8] 20LATESTMSGTM------[2005-09-02
15:51:23 ZE8] 21$UpdatedBy------[CN=ultrapower/O=ultranms]
=====使用结构:===== [sender]:OUTORG [receiver]:OUTRCP [title]:SUBJ
[reason]:NODELREA [status]:DISPSTAT [time]:LATESTMSGTM [msgid]:UNQMSGID
其中:DISPSTAT: 1=unknown 2=inqueue 4=delivered 8=delivery_failed
16=transferred
32=transfer_failed 64=group_expanded 1073741824=deleted
MSGTYPE: 1=unknown 2=memo 4=deliveryreport 8=nondeliveryreport
16=returnreceipt 32=phonemessage 64=tracereport 128=notice
/
以下是我启动MTC服务后,运行的一监控程序,不过现在没有环境不能保证程序的正确性,但是其中的原理可以给大家借鉴一下。
public class TraceMailDAO {
private static String user = "songlb";
private static String passwd = "123456789";
static Logger log = LoggergetLogger("TraceMailDAO");
private HashMap persons = new HashMap(); //要跟踪的用户集合
/
得到相应的数据库 数据库的路径是相对于Data目录下的 mtdata/mtstorensf
@param accessDB
@return
@throws NotesException
/
public static Database getDB(String accessDB) throws NotesException {
lotusdominoSession s = lotusdominoNotesFactorycreateSession(
JDBCConstantsDOMINOHOST, user, passwd);
loginfo("Domino服务器主机名:" + sgetServerName() + "版本号:"
+ sgetNotesVersion());
lotusdominoDatabase db = sgetDatabase(null, accessDB);
if (!dbisOpen()) {
dbopen();
}
//打出数据库的标题和大小
//Systemoutprintln("title:" + dbgetTitle() + " size:" +
// dbgetSize());
return db;
}
/
取mcstorensf数据库的alluser表的数据 是对每天Mail Router 系统退信进行筛选。 1、程序每天只取本天的退信
2、取得跟踪的人员的邮件
/
public List getMTCDatas() {
ArrayList ls = new ArrayList();
try {
Database db = TraceMailDAOgetDB(JDBCConstantsDB);//得到数据库
View view = (View) dbgetView(JDBCConstantsDBVIEW);//取得自己想要的MAIL视图
Document doc = viewgetFirstDocument();
Vector columnNames = viewgetColumns(); //得到所有列名
Nsfmail entity = null;
boolean flag = false;
while (doc != null) {
entity = new Nsfmail();
Vector values = docgetColumnValues();
String tmp = null;
String tmpStr = "";
for (int j = 0; j < columnNamessize(); j++) {
String columnName = ((String) columnNameselementAt(j)
toString())trim();
if (columnNamelength() != 0) {
//loginfo(valuesget(j)getClass());
//ViewColumn column = (ViewColumn)
// columnNameselementAt(j);
if (columnNameequals("sender")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
/
//1、判断是系统退信
/
if (tmpindexOf("Mail Router") > -1) {
} else {
//flag = false;
// break;
}
entitysetSender(tmp);
}else{
tmp=(String) valuesget(j);
}
} else if (columnNameequals("receiver")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
}else{
tmp=(String) valuesget(j);
}
/
//2、判断是否是要跟踪的用户
/
if (personscontainsKey(tmp)) {
} else {
// flag = false;
// break;
}
entitysetReceiver(tmp);
} else if (columnNameequals("title")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
}else{
tmp=(String) valuesget(j);
}
entitysetTitle(tmp);
} else if (columnNameequals("reason")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
}else{
tmp=(String) valuesget(j);
}
entitysetReason(tmp);
} else if (columnNameequals("status")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
}else{
tmp=StringvalueOf(valuesget(j));//单一是Double类型
}
/
3、判断是不是传送失败或邮递失败的邮件
/
if (tmpindexOf(JDBCConstantsDELIVERY_FAILED) > -1
|| tmp
indexOf(JDBCConstantsTRANSFER_FAILED) > -1) {
} else {
flag = false;
// break;
}
entitysetStatus(tmp);
} else if (columnNameequals("time")) {
tmpStr = StringvalueOf((DateTime) valuesget(j));
tmpStr = tmpStrsubstring(0, 19);
/
//4、判断是否是今天的退信信息
/
String nowTime = DateUtiltimesLong2Date(new Date()
getTime());
String[] rt = nowTimesplit(" ");
nowTime = rt[0] + " 00:00:00";
long t1 = DateUtilStringToDate(nowTime)getTime();
//loginfo("t1:"+t1);
//loginfo("tD1:"+DateUtilStringToDate(tmp));
nowTime = rt[0] + " 23:59:59";
long t2 = DateUtilStringToDate(nowTime)getTime();
long t3 = (DateUtilStringToDate(tmpStr))getTime();
if (t3 >= t1 && t3 <= t2) {
} else {
// flag = false;
// break;
}
entitysetTime(t3);
} else if (columnNameequals("msgid")) {
if(valuesget(j) instanceof Vector){
tmp = ((Vector) valuesget(j))toString();
}else{
tmp=(String) valuesget(j);
}
entitysetMsgid(tmp);
}
}
}
if (flag) {
lsadd(entity);
loginfo("888888");
}
doc = viewgetNextDocument(doc);
// }
Systemoutprintln("");
}
} catch (lotusdominoNotesException e) {
eprintStackTrace();
} catch (Exception ex) {
exprintStackTrace();
}
return ls;
}
public static void main(String[] args) {
TraceMailDAO dao = new TraceMailDAO();
ArrayList ls=(ArrayList)daogetMTCDatas();
for(int i=0;i<lssize();i++){
loginfo(lsget(i)toString());
}
}
}
// /
// 发送一个附件的情况
// /
// //设置附件
// //DataSource是对附件的封装,是一个接口,系统已经实现的子类有URLDataSource, DataHandlerDataSource, FileDataSource
// //里面封装了各种与附件有关的方法,包括获取附件的InputStream
// DataSource dataSource = new FileDataSource(new File("E:\\aaatxt"));
// //DataHandler是对DataSource的封装,可以把Stream转换为String,
// DataHandler dataHandler = new DataHandler(dataSource);
// part4setDataHandler(dataHandler);
// //附件的名称,默认为content,如果文件名不加扩展名在进行附件下载的时候系统会不知道该附件是什么类型的附件,
// //这样在不清楚文件类型的情况下,文件有可能是打不开的
// part4setFileName("docsql");
//
// /
// 发送多个附件的情况
// /
// Multipart attachments = new MimeMultipart();
// BodyPart attach1 = new MimeBodyPart();
// //设置附件1的内容
// DataSource dataSource_attach1 = new FileDataSource(new File("E:\\aaatxt"));
// DataHandler dataHandler_attach1 = new DataHandler(dataSource_attach1);
// attach1setDataHandler(dataHandler_attach1);
// attach1setFileName("attach1_docsql");
// BodyPart attach2 = new MimeBodyPart();
// //设置附件2的内容
// DataSource dataSource_attach2 = new FileDataSource(new File("E:\\aaatxt"));
// DataHandler dataHandler_attach2 = new DataHandler(dataSource_attach2);
// attach2setDataHandler(dataHandler_attach2);
// attach2setFileName("attach2_docsql");
// attachmentsaddBodyPart(attach1);
// attachmentsaddBodyPart(attach2);
// part5setContent(attachments);
//这里可以成功发送附件,请参考,发附件功能用得相对较少,注意附件大小不要太大了
一般不建议代理中运行代理。而代理之间传递建议直接把需要传递的值保存在文档里面,通过读取文档关键字找到对应文档的方式去传递。
而文档、URL、代理之间传递参数在domino中有固定的制定好的CGI变量的用法。如果还有什么不明白可以追问或私聊
Domino也是支持Java程序的啊,如果你想下载Domino的附件可以用servlet,domino是支持servelet的,在servlet中调用Domino的classDatabase,View 和Document ,RichTextItem和EmbeddedObject 这些类,就可以实现附件的下载,当然 是通过>
以上就是关于咨询:domino超大数据库在设计端因打不开而需要进行的 *** 作全部的内容,包括:咨询:domino超大数据库在设计端因打不开而需要进行的 *** 作、如何在java中访问NOTE中的nsf数据库、紧急求助,关于java 取domino的附件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)