Autor Thema: XmlRpc unsupported Java type  (Gelesen 2864 mal)

Offline hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
XmlRpc unsupported Java type
« am: 10.02.06 - 11:36:30 »
Hallo !
Wer kann bitte bei folgendem Probem helfen ?????

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.DocumentCollection;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.NotesThread;
import lotus.domino.Session;

import org.apache.xmlrpc.XmlRpcServer;

public class DominoRpc extends HttpServlet {

   private static final long serialVersionUID = -8023493465312843423L;
   public void init(ServletConfig config) throws ServletException {
      super.init(config);

   }
   public void destroy() {

   }
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      XmlRpcServer xmlrpc = new XmlRpcServer();
      xmlrpc.addHandler("domino-rpc", this);
      InputStream is = request.getInputStream();
      byte[] result = xmlrpc.execute(is);
      response.setContentType("text/xml");
      response.setContentLength(result.length);
      OutputStream out = response.getOutputStream();
      out.write(result);
      out.flush();
   }

   public Hashtable getVoipOp(String Account) throws Exception {
      Hashtable htreturn = new Hashtable();
      Hashtable ht = new Hashtable();
      NotesThread.sinitThread();
      try {
         Session s = NotesFactory.createSession();
         Database db = s.getDatabase("", "av/mnvertrag.nsf");
         if (Account.equals("All")) {
            String S0 = "Line1UserName != \"\" & (Form = \"OP\" | Form = \"Voip\")";
            DocumentCollection dc = db.search(S0, null, 0);
            for (int i = 1; i <= dc.getCount(); i++) {
               Document doc = dc.getNthDocument(i);
               Account = doc.getItemValueString("Line1UserName");
               // Variante Hashtable is OK

               Hashtable userht = null;
               if (ht.get(Account) == null) {
                  userht = new Hashtable();
                  userht.put("Kunde", doc.getItemValueString("Kunde"));
                  userht.put("Kundennummer", doc.getItemValueString("Kundennummer"));
                  userht.put("Account", Account);
                  userht.put("OP", new Double(0));
               }else{
                  userht = (Hashtable)ht.get(Account);
               }
               Double du = (Double) userht.get("OP");
               if (doc.getItemValueString("Form").toLowerCase().equals("voip")) {
                  userht.put("OP", new Double(doc.getItemValueDouble("Preis") + du.doubleValue()));
               }
               if (doc.getItemValueString("Form").toLowerCase().equals("op")) {
                  userht.put("OP", new Double(doc.getItemValueDouble("SZahlung") + du.doubleValue()));
               }
               doc.recycle();
               ht.put(Account, userht);

               // End Variante Hashtable

               // Variante Object geht nicht
//   XML-RPC Error 0: org.apache.xmlrpc.XmlRpcException:
//   java.lang.RuntimeException: unsupported Java type: class voipOPObj

               voipOPObj userObj = null;                
               if (ht.get(Account) == null) {
                  userObj = new voipOPObj();
                  userObj.Kunde = doc.getItemValueString("Kunde");
                  userObj.Kundennummer = doc.getItemValueString("Kundennummer");
                  userObj.Account = Account;
               }else{
                  userObj = (voipOPObj)ht.get(Account);
               }
               if (doc.getItemValueString("Form").toLowerCase().equals("voip")) {
                  userObj.OP = new Double(doc.getItemValueDouble("Preis") + userObj.OP.doubleValue());
                  
               }
               if (doc.getItemValueString("Form").toLowerCase().equals("op")) {
                  userObj.OP = new Double(doc.getItemValueDouble("SZahlung") + userObj.OP.doubleValue());
               }
               doc.recycle();
               ht.put(Account, userObj);

               // End Variante Object

            
            } // end for
            htreturn.put("User", ht);
            htreturn.put("Status", "success");

            dc.recycle();
         } else {
            String S0 = "Line1UserName = \"" + Account + "\" & (Form = \"OP\" | Form = \"Voip\")";
            DocumentCollection dc = db.search(S0, null, 0);
            double su = 0;
            Hashtable userht = new Hashtable();
            for (int i = 1; i <= dc.getCount(); i++) {
               Document doc = dc.getNthDocument(i);
               userht.put("Kunde", doc.getItemValueString("Kunde"));
               userht.put("Kundennummer", doc.getItemValueString("Kundennummer"));
               userht.put("Account", Account);

               if (doc.getItemValueString("Form").toLowerCase().equals("voip")) {
                  su = su + doc.getItemValueDouble("Preis");
               }
               if (doc.getItemValueString("Form").toLowerCase().equals("op")) {
                  su = su + doc.getItemValueDouble("SZahlung");
               }
               userht.put("OP", new Double(su));
               doc.recycle();
            } // end for
            ht.put(Account, userht);
            htreturn.put("User", ht);
            htreturn.put("Status", "success");
            dc.recycle();
         }

         db.recycle();
         s.recycle();
      } catch (NotesException ne) {
         System.out.println(ne.id + " " + ne.text);
      } finally {
         NotesThread.stermThread();
      }
      return htreturn;
   }
}

   public class voipOPObj {
      public String Kunde;
      public String Kundennummer;
      public String Account;
      public Double OP;
      
      voipOPObj() {
         Kunde = null;
         Kundennummer = null;
         Account = null;
         OP = new Double(0);
      }
   
Danke für die Mühe im Voraus


Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XmlRpc unsupported Java type
« Antwort #1 am: 10.02.06 - 12:17:54 »
Ich kapiere zwar nicht so richtig, was du da eigentlich machst, aber versuch mal:
public class voipOPObj implements java.io.Serializable

Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
Re: XmlRpc unsupported Java type
« Antwort #2 am: 10.02.06 - 12:25:48 »
Danke für die Antwort

habe ich schon probiert, geht aber leider nicht
gleicher Fehler

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XmlRpc unsupported Java type
« Antwort #3 am: 10.02.06 - 13:06:41 »
Ich glaub du kannst mit diesem xmlRpc keine komplexen Objekte übertragen.
http://ws.apache.org/xmlrpc/types.html
Zitat
... unless you write your own handler.
Hab noch nie damit gearbeitet.

Was machst du eigentlich?
Eine Anwendungen in einem Servlet-Container, die auf Domino und gleichzeitig remote auf irgendwelche geheimnisvollen Voice Over IP Services zugreifen soll?
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
Re: XmlRpc unsupported Java type
« Antwort #4 am: 10.02.06 - 13:45:19 »
Zur Erklärung

Ich arbeite bei einem kleinen lokalen inet-provider.

Auf einen Server liegt eine MySql-Datebank die mit unseren Accounts eines Voip-Providers
gefüllt ist. (wird)

Über das XML-Rpc Interface (RPC-Server auf dem SQL-Server und RPC-Server im Servlet von Domino werden Daten ausgetauscht.
Workflow zur Kundenerfassung in Domino.
Zahlungsüberprüfung der Kunden aus Offenen Posten (KHK) und Einzahlungen in Domino.
(Das Beispiel zeigt die Richtung Domino--> SQLServer)
Genauso existiert ein Framework SQl-Server-->Domino

Anzeige mit folgender Client Funktion:
         Hashtable result = (Hashtable) xmlrpc.execute("domino-rpc.getVoipOp", params);
         System.out.println("Status --> " + result.get("Status"));
         
         Hashtable Nutzer = (Hashtable)result.get("User");
         Enumeration e = Nutzer.keys();
         while (e.hasMoreElements()) {
            String alias = (String) e.nextElement();
            System.out.println(alias + " --> " + Nutzer.get(alias));
            Hashtable User = (Hashtable)Nutzer.get(alias);
            Enumeration n = User.keys();
            while (n.hasMoreElements()) {
               String alia = (String) n.nextElement();
               System.out.println(alia + " --> " + User.get(alia));
            }         
         }

Das erzielte Ergebnis sieht etwa wie folgt aus.

Status --> success
491805125781xxx --> {OP=50.0, Account=4918051257819XX, Kundennummer=15085, Kunde=XXXXX, Dirk}
OP --> 50.0
Account --> 4918051257819xx
Kundennummer --> 15085
Kunde --> YYYYY, Dirk
491805125781xxx --> {OP=20.0, Account=4918051257818xx, Kundennummer=15810, Kunde=YYYYY, Ines}
OP --> 20.0
Account --> 4918051257818xx


 

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XmlRpc unsupported Java type
« Antwort #5 am: 10.02.06 - 14:26:20 »
Das sieht für mich ein bischen merkwürdig aus.
Meine Idee wäre jetzt:
Du kannst mal testweise Tomcat als Servlet-Engine einklinken:
http://tomcat.apache.org/connectors-doc/howto/domino.html
Da ist auch remote debugging mit z.B. Eclipse WTP möglich.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz