дарю, в общее пользование <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"java JarDeploy"</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>package org.files;
import lotus.domino.*;
import java.util.*;
public class JarDeploy {
private String libpath="";
private String rtName="body";
public JarDeploy(){
String jpath=System.getProperty("java.home");
String fsep=System.getProperty("file.separator");
libpath=jpath+fsep+"lib"+fsep+"ext"+fsep;
}
public void deploy(String dbID, String unid){
try{
Session ses=NotesFactory.createSession();
String server=ses.getServerName();
Database db=ses.getDatabase(null,null);
if (db.openByReplicaID(server, dbID)){
Document doc=db.getDocumentByUNID(unid);
RichTextItem rt=(RichTextItem)doc.getFirstItem(rtName);
Vector objs=rt.getEmbeddedObjects();
Enumeration e = objs.elements();
while (e.hasMoreElements()) {
EmbeddedObject eo = (EmbeddedObject)e.nextElement();
eo.extractFile(libpath + eo.getName());
}
}
}catch (Exception e){
e.printStackTrace();
}
}
public String getLibPath(){
return libpath;
}
public String setRtName(String xName){
rtName=xName;
return xName;
}
}[/CODE]
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"LS (код объединил, дергал из либ кускоми, может ч-то не хватать)"</div></div><div class="sp-body"><div class="sp-content">
Код:
Option Public
Option Declare
Use "ErrorHandling"
Use "JarDeploy"
Const ERRBASE_FILES=1110
Const ERRLS2JINIT=ERRBASE_FILES+1, CS_ERRLS2JINIT={ошибка инициализации класса Java}
Const ERRFILEACCESS=ERRBASE_FILES+2, CS_ERRFILEACCESS={ошибка доступа к файлу}
Const CS_RELOAD={Перезагрузите, пожалуйста, программу}
Const CS_RETRY={повторите попытку}
'********************************
Class JarLib As ErrorHandlerWJ
Private JarLibObj As JavaObject
Private JarLibClass As JavaClass
Private ses As NotesSession
Private db As NotesDatabase
Private libPath As String
Private rtName As String
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub New()
Dim fail As Boolean
On Error Goto errorhandler
Set JarLibClass = jSession.GetClass("org.files.JarDeploy")
Set JarLibObj = jarLibClass.CreateObject
libPath=JarLibObj.getLibPath()
Set ses=New NotesSession
Set db=ses.CurrentDatabase
rtName={Body}
ExitFunction:
If fail Then
On Error Goto 0
Error ERRLS2JINIT, CS_ERRLS2JINIT
End If
Exit Sub
errorhandler:
Call Me.RaiseError()
fail=True
Resume ExitFunction
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Deploy(unid As String) As Boolean
On Error Goto ErrH
Dim doc As NotesDocument
Set doc=db.GetDocumentByUNID(unid)
Dim filesList List As String
Dim fName As String
fName=DetachDocFiles(doc,{*.jar},filesList)
If fName<>"" Then
Forall f In filesList
Dim sfile As String
sfile=Listtag(f)
If MoveFile(libPath & sfile, libPath & sfile & {.old})=70 Then
'файл заблокирован
Messagebox CS_ERRFILEACCESS & Chr(10)_
& (CS_RELOAD) & Chr(10)_
& CS_RETRY, MB_OK + MB_APPLMODAL + MB_ICONEXCLAMATION
Exit Function
End If
Call MoveFile(Cstr(f) & sfile, libPath & sfile)
End Forall
Deploy=True
End If
Quit:
Exit Function
ErrH:
Call Me.RaiseError()
Resume Quit
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function SetRtName(xName As String) As String
rtName=xName
setRtName=xName
End Function
End Class
Dim db As NotesDatabase
Dim ses As NotesSession
Dim agentLog As NotesLog
Function MoveFile(srcName As String, dstName As String) As Integer
On Error Goto ErrorHandler
Call DeleteFile(dstName)
Name srcName As dstName
MoveFile=-1
ExitFunction:
Exit Function
ErrorHandler:
If agentLog Is Nothing Then
Call RaiseError()
Else
Call agentLog.LogAction("Move file:"& srcName & "->" & dstName & " error:" & Error$)
End If
MoveFile=Err
Resume ExitFunction
End Function
Function DeleteFile(fName As String) As Boolean
On Error Goto ErrorHandler
Kill fName
DeleteFile=True
ExitFunction:
Exit Function
ErrorHandler:
If agentLog Is Nothing Then
Call RaiseError()
Else
Call agentLog.LogAction("Delete file:"& fName & " error:" & Error$)
End If
Resume ExitFunction
End Function
Sub Initialize
Dim libobj As New JarLib()
Dim view As NotesView
Set ses=New NotesSession
Set db=ses.CurrentDatabase
Set view=db.GetView(OPTIONS_LOOKUP)
Dim doc As NotesDocument
Set doc=view.GetDocumentByKey(OPT_JARLIB, True)
libobj.Deploy(doc.UniversalID)
End Sub
ErrorHandling, в виде lss (втянуть в либу либо изменить Use)
Посмотреть вложение ErrorHandling.lss.zip