Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Pinhead am 22.01.04 - 10:12:24

Titel: Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 22.01.04 - 10:12:24
Hi,

ich habe eine WebAnwendung, die es dem Benutzer ermöglichen soll E-Mails zu verschicken. Die sollen auch Anhänge verwalten können. Ich lade also den Anhang hoch und erstelle die Datei auf dem Server in einem Temporären Verzeichnis. Wenn ich die Datei von da jetzt an ein rti Objekt embedden will dann bekomme ich folgenden Notes Fehler

Notes error: You are not authorized to perform that operation

Es scheint also als ob mir ein Recht fehlt. Leider kenne ich mich mit der Rechte vergabe bei Notes 6 nicht so aus. Kann mir jemand sagen warum dieser Fehler auftritt ?


 
 
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Don Pasquale am 22.01.04 - 10:15:05
Kannst Du mal Deinen Code hier posten, dann kommen andere vielleicht dahinter.

Ciao
Don Pasquale
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 22.01.04 - 10:28:54
public boolean execute() throws TechnischeException {
      boolean ret = false;
      try {
         if (nachricht != null) {
            session = na.connect();
            Database mailbox = null;
            mailbox =
               session.getDatabase(
                  session.getServerName(),
                  IKonstanten.NOTES_DB_MAILBOX);

            //Sicherstellen das DB geöffnet ist...
            if (!mailbox.isOpen()) {
               mailbox.open();
            }
            Document doc = mailbox.createDocument();

            if (doc != null) {

               RichTextItem rti =
                  doc.createRichTextItem(IKonstanten.NOTES_FIELD_BODY);

               rti.appendText(nachricht.getBody());

               Vector attachments = nachricht.getAttachments();

               if ((attachments != null) && (attachments.size() > 0)) {
                  String attachDir =
                     PropertyHelper.getPropertyHelper().getProperty(
                        "ATTACH_DIR");
                  ErstelleAnhangCmd eac = new ErstelleAnhangCmd();
                  eac.setNachricht(nachricht);
                  eac.execute();
                  RichTextItem anhang =
                     doc.createRichTextItem(
                        IKonstanten.NOTES_FIELD_ATTACHMENT);
                  for (int i = 0; i < attachments.size(); i++) {

                     //DTOAnhang dtoa = (DTOAnhang) attachments.get(i);
                     logger.info(
                        "Anhang: " + attachDir + "/" 
                           + ((DTOAnhang) attachments.get(i))
                              .getDateiname());
                     anhang.embedObject(
                        EmbeddedObject.EMBED_ATTACHMENT,
                        "",
                        attachDir
                           + "/"
                           + ((DTOAnhang) attachments.get(i))
                              .getDateiname(),
                        "Anhang");

                     logger.debug("Angehängt");
                  }
               }

               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_FROM,
                  nachricht.getFrom());
               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_SUBJECT,
                  nachricht.getSubject());
               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_TO,
                  nachricht.getTo());
               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_VSNR,
                  nachricht.getVsnr());
               DateTime dt = session.createDateTime(new Date());
               doc.appendItemValue(IKonstanten.NOTES_FIELD_DATE, dt);
               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_RECIPIENTS,
                  nachricht.getTo());

         
               //setzen des Maskennamens
               doc.appendItemValue(
                  IKonstanten.NOTES_FIELD_FORM,
                  IKonstanten.NOTES_FORM_MAIL_MEMO_NAME);

               if (doc.save()) {

                  logger.info("Dokument gespeichert!");
                  ret = true;
               } else {
                  logger.info(
                     "Dokument konnte nicht gespeichert werden!");
                  ret = false;
               }
            }

         }

      } catch (NotesException nex) {
         logger.error("Notes Fehler : ", nex);
         TechnischeException te =
            new TechnischeException(
               "Fehler: "
                  + (new Date()).getTime()
                  + " Nachricht konnte nicht versandt werden");
         logger.error("Fehler", te);
         throw te;
      }
      return ret;
   } //execute
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Don Pasquale am 22.01.04 - 14:37:45
Vielleicht ist das gar kein Rechteproblem unter Lotus sondern unter dem Betriebssystem. Hat der User denn überhaupt Lese-und Schreibrechte auf dem Verzeichnis auf dem Server ?

Ciao
Don Pasquale
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 22.01.04 - 14:51:38
Ja  der User hat Rechte da hinzuschreiben, weil die Dateien ja auf dem Server erscheinen. Aber das anhängen funktioniert nicht
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Don Pasquale am 22.01.04 - 14:54:57
An welcher Stelle hast Du den Code platziert ?
In welchem Ereignis ?
Ciao
Don Pasquale
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 23.01.04 - 06:45:57
Der Code steht in einem CommandBean. Dieses CommandBean wird von einem Buissness Delegate aufgerufen. Das ganze passiert wenn der Benutzer in der Web Oberfläche auf Senden klickt
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Axel_Janssen am 24.01.04 - 00:16:28
was steht in
IKonstanten.NOTES_DB_MAILBOX  ???

Die Mail.Box des Servers?
Ich würde darüber nachdenken, dir vom Notes admin einen "technischen User" erstellen lassen und von dessen Mail-Datenbank die Mail zu verschicken.

Auf was für einem Server läuft diese Webanwendung?
Greifst du "von aussen" auf Notes zu? Aus Websphere? Tomcat?

Wie authentifizierst du dich in Notes? Was steht in na.connect()

Rufe auf jeden Fall recycle() für Notes-Objekte auf. Ansonsten hast du nicht geschlossene RPC-connections.
Guckst du hier:
http://www-10.lotus.com/ldd/today.nsf/lookup/Java_access_2
Suche dort nach recycle. Dann bist du im richtigen Abschnitt.

Gruß Axel

Gruß Axel




Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Axel_Janssen am 24.01.04 - 10:05:21
Der Code steht in einem CommandBean. Dieses CommandBean wird von einem Buissness Delegate aufgerufen. Das ganze passiert wenn der Benutzer in der Web Oberfläche auf Senden klickt
Das ist ein sehr interessantes Thema. Bitte verstehe das folgende nicht als Oberlehrer-Attacke. Ich bin selbst dabei, da ein wenig Ordnung in meinen Kopf zu bringen. Deshalb hier zur Diskussion:


Warum Business Delegate.
Ist es nicht eigentlich eher eine Session Facade, die deine CommandBeans erzeugt?
Quatsch, weiss noch nicht so richtig warum.

Zumindest Marinescu verwendet in seinem Buch "EJB Design Patterns" Business Delegate nur im Sinne eines zusätzlichen Layers zum Zugriff auf die EJB-Facade vom Client aus.
Das Buch vom Sun Java Center ist in Hannover. Der Inhalt wg. Serverausfall z.Zt. nicht online verfügbar: http://java.sun.com/developer/technicalArticles/J2EE/patterns/
 :-[
Adam Bien beschreibt Business Delegate auch als Mittel zur Kappselung der besonderen Zugriffslogik des Remote-Zugriffs gegenüber dem Client. Wiederum zum Zugriff auf eine Session Facade.  

Hier läuft das aber IMHO alles über Plain Old Java Objects. Da gibt es keine "besondere Zugriffslogik". Also ist es eher eine Session Facade.  

(wird fortgesetzt)
oder ???

Gruß Axel

PS: falls jemand das noch liest. Das hört sich wissenschaftlicher an als es ist. Patterns sind eine Art best practices für OO-Programmierer. Es gibt dafür Kataloge, wo man nachschlagen kann. Eigentlich eine sehr sinnvolle Erfindung ähem Entdeckung.
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 26.01.04 - 08:18:27
Hi,

ja du hast Recht, mit dem Session Fassade. Diese Pattern wird auch noch verwandt. Danke auch für den Tip mit dem recycle.

Zu den anderen Fragen. In der IKonstanten steht die Mailbox des Servers.

Die Anwendung läuft auf einem Websphere Server. Ich authetifiziere mich im Moment noch über meine ID. Die wird aber später durch einen technischen Benutzer ersetzt.

Der Code vom na.connect()
public Session connect() throws NotesException {
      logger.log(Level.INFO, serverName + " " + userName + " " + userPwd); //Wird im Konstruktor befüllt
      if (session == null) {
         session = NotesFactory.createSession(serverName, userName, userPwd);
         server = session.getServerName();
      }
      return session;
   } //connect;
Titel: Re:Fehler beim Anhängen von Dateien an Notes 6 (mit Java)
Beitrag von: Pinhead am 26.01.04 - 11:21:02
Freudig kann ich verkünden das es funktioniert.

Kein Fehler im Code nur zu wenig Rechte. Der Benutzer der die Nachrichten in der Mail.box erstellt muss mindestens Editor Recht haben.

Bis demnächst