Domino 9 und frühere Versionen > ND8: Entwicklung

Ärger mit Aufruf Java Klassen Member von LS

(1/3) > >>

AndreasWegener0815:
Hallo Forum.
Ich habe eine Script library in java mit der Klasse Tools.. Dort möchte ich eine Funktion via LS im PostSave event aufrufen.
Die Parameter sind zwei Strings und das Session Objekt.
Leider erhalte ich bei der Übergabe des Session Objects immer eine „Type Mismatch „Fehlermeldung in Notes. Wenn ich das Session Objekt weg lasse funktioniert der Aufruf.
Sind die Java Sesion class und die Lotus script session class nicht kompatibel  ?
Dim ToolClassObj  As JavaObject
Dim js As New JAVASESSION
Dim ToolClass As JAVACLASS
Dim lSession As New Notessession()
Dim x As String
Set lDoc = Source.Document      
lSender="Hans Wurst"
lReceiver="Hans Wurst"      
Set ToolClass = js.GetClass ("Tools")
Set ToolClassObj = ToolClass.CreateObject ()
ToolClassObj.mSession = lSession      
Call ToolClassObj.SendCallInfoMailFromLS(lSender,lReceiver,Source lSession)

Leider kann ich auch in meiner script library keine session erzeugen, da es sich hier nicht um einen Agenten handelt.
Eventuell hat jemand eine Idee ?
Vielen Dank und Gruß


atbits:
Warum kannst Du in der ScriptLibrary keine Session erzeugen?
Dass es sich nicht um einen Agent handelt ist kein Grund.

aus der Hilfe ...


--- Code: ---import lotus.domino.*;
public class platform1 extends NotesThread
{
  public static void main(String argv[])
    {
        platform1 t = new platform1();
        t.start();
    }
  public void runNotes()
    {
    try
      {
        Session s = NotesFactory.createSession();
        // To bypass Readers fields restrictions
        // Session s = NotesFactory.createSessionWithFullAccess();
        String p = s.getPlatform();
        System.out.println("Platform = " + p);
      }
    catch (Exception e)
      {
        e.printStackTrace();
      }
    }
}

--- Ende Code ---

AndreasWegener0815:
Danke für den Tip.

Allerdings scheint es nicht zu funktionieren.
Sieht so aus, als ob NotesFactory.createSession(); keine Session erzeugt.
Was mich stutzig macht ist die folgende Meldung im stacktrace:
 "Cannot create a session from an agent"

nulljava.lang.NullPointerException
   at Tools.SendCallInfoMailFromLS(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
   at java.lang.reflect.Method.invoke(Method.java:600)
   at lotus.domino.JavaConnectInvoker.invoke(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
   at java.lang.reflect.Method.invoke(Method.java:600)
   at lotus.domino.JavaConnectLoader.invoke(Unknown Source)
NotesException: Cannot create a session from an agent
   at lotus.domino.local.Session.checkJavaConnect(Unknown Source)
   at lotus.domino.local.Session.createSession(Unknown Source)
   at lotus.domino.NotesFactory.createSession(Unknown Source)
   at Tools.runNotes(Unknown Source)
   at lotus.domino.NotesThread.run(Unknown Source)

atbits:
Poste doch mal den Source

Erbt deine Klasse von NotesThread?

public class platform1 extends NotesThread

AndreasWegener0815:
Da isser :-).
gehe hierallerdings nicht über main sondern habe eine funktion init


--- Code: ---import java.util.Vector;

import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.NotesThread;
import lotus.domino.RichTextItem;
import lotus.domino.Session;
public class Tools extends NotesThread

{
Session mSession=null;
//*************************************************************************************************
public Tools(){

}
public void init()
{
System.out.println("Init = ");
Tools t = new Tools();
    t.start();
try {
mSession = NotesFactory.createSession();
} catch (NotesException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  if (mSession == null )
        System.out.println("Session in init is null");
System.out.println("msession = "+mSession.toString());
}
//*************************************************************************************************
public void runNotes()
    {
    try
      {
        mSession = NotesFactory.createSession();
        // To bypass Readers fields restrictions
        // Session s = NotesFactory.createSessionWithFullAccess();
        if (mSession == null )
        System.out.println("Session is null");
        String p = mSession.getPlatform();
        System.out.println("Platform runNotes = " + p);
      }
    catch (Exception e)
      {
        e.printStackTrace();
      }
    }
//*************************************************************************************************
public void SendCallInfoMailFromLS (String iSender,String iRecipient,String iDOCUID) 
{
try {
if (mSession== null)
System.out.println("Session in SendCallInfoMailFromLS is null");

System.out.print("Session is "+mSession.toString());
//Document lDoc=lSession.getCurrentDatabase().getDocumentByUNID(iDOCUID);
//SendCallInfoMail(iSender,iRecipient,lDoc,lSession);
} catch (Exception e) {
System.out.println("SendCallInfoMailFromLS in SendCallInfoMail");
System.out.print(e.getMessage());
e.printStackTrace();
}
}

//*************************************************************************************************

}
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln