Então vamos usar o Eclipse para debugar nosso Agent Java. É recomendável que se deixe um eclipse apenas para isso, pois vamos mudar a JRE do Eclipse para usar a JRE do Notes. Caso use o mesmo Eclipse para outras aplicações Java, terá que ficar alterando o JRE padrão o tempo todo.
Primeiramente, crie um projeto java no eclipse como o nome que preferir. Crie a classe JavaAgent. Cole o seguinte código:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
private Database database;
private Session session;
public JavaAgent() {
}
public JavaAgent(Session s, Database d) {
this.session = s;
this.database = d;
}
//
public static void main(String[] args) {
Session sess=null;
Database db=null;
JavaAgent ag;
// Initialize Notes
NotesThread.sinitThread();
try {
sess = NotesFactory.createSession(); // start a Notes session
db = sess.getDatabase("",
"nomeDaDatabase.nsf"); // simulate home database for agent
ag = new JavaAgent(sess, db); /* simulate agent object with session and database*/
ag.NotesMain(); // call main routine of agent
}
catch(NotesException ne) {
System.out.println(ne.id + " " + ne.text);
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (db != null) db.recycle();
if (sess != null) sess.recycle();
}
catch (Exception x) {}
NotesThread.stermThread();
}
}
public void NotesMain() {
Session session = null;
AgentContext agentContext = null;
try {
if (this.session != null) // Already have an agent context.
{
session = this.session;
}
else { // Need to get agent context.
session = this.getSession();
if (session==null) throw new
NotesException(NotesError.NOTES_ERR_ERROR, "Could not get current session at start of agent.");
agentContext = session.getAgentContext();
if (agentContext==null) throw new
NotesException(NotesError.NOTES_ERR_ERROR, "Could not get agent context at start of agent.");
this.database = agentContext.getCurrentDatabase();
if (this.database==null) throw new
NotesException(NotesError.NOTES_ERR_ERROR, "Could not get current database at start of agent.");
}
}
catch(NotesException ne) {
System.out.println(ne.id + " " + ne.text);
return;
}
catch (Exception e) {
e.printStackTrace();
return;
}
//Your code goes here!!!
}
} Aparecerá erros em todos os objetos do Notes, pois ainda não colocamos a JVM/JRE do Notes.Vamos mudar o JRE do Eclipse. Vá no menu: Window > Preferences.
Vá em Java > Installed JREs.
Clique em Add, selecione Standard VM, clique em Next. Em JRE home, clique em Directory e selecione o diretório da JVM do Notes. Exemplo: C:\Program Files\IBM\Lotus\Notes\jvm
Coloque um nome de sua preferência e clique em Finish. Agora marque a JVM do Notes como padrão.
Apenas dê OK.
Agora vamos para a segunda parte. Quando você estiver programando o Java Agent no Eclipse, ele já vai usar a JVM do Notes, estando disponíveis todos comandos vindos do Notes para Java Agent. Mas também precisamos usar essa JVM na hora de executar o programa e debugar.
Vá em Run > Run Configurations.
Dê um clique duplo em Java Application para criar uma nova configuração. Coloque o nome que quiser (usei JavaAgent), selecione seu projeto e a Main Class.
Vá na aba Arguments e, caso o Working Directory não esteja já definido para o diretório de seu Notes, clique em Other e o selecione.
Certifique-se de que em JRE esteja selecionado em Runtime JRE: Project JRE (<nome que você colocou na jvm>).
Clique em Apply e Close. Agora você pode programa e debugar seu Java Agent no Eclipse.
Agora apenas modifique a linha:
db = sess.getDatabase("", "nomeDaDatabase.nsf");colocando o nome/caminho de sua database.Programe seu Java Agent apartir da linha:
//Your code goes here!!!
-------------------------------------------------------------
Fonte: http://www.bobzblog.com/tuxedoguy.nsf/dx/the-2-headed-beast-debugging-domino-java-agents-with-eclipse
Adaptação: Fernando Camargo








Nenhum comentário:
Postar um comentário