MozillaPL.org - polskie centrum Mozilli

Główne menu:

XUL - xml-rpc - Java - Spring vs PHP

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

XUL - xml-rpc - Java - Spring vs PHP

Postautor: isthar » 11 grudnia 2004, 22:54

Przeglądarka: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Witam.

Piszę sobie taką aplikację z użyciem XUL-a.
w skrócie definicje interfejsu są generowane przez Tapestry (http://jakarta.apache.org/tapestry), który jest zintegrowany ze springiem (http://www.springframework.org). XUL powinien się komunikować z aplikacją poprzez web services (xml-rpc). Widziałem takie rozwiązanie na stronce poświęconej php.
(http://www.phppatterns.com/index.php/ar ... ew/86/1/2/ )

W springu stworzenie web serwisu xml-rpc jest bardzo proste. ja próbuję używac implementacji hessian albo burlap (napisane przez caucho na potrzeby resina a teraz dostepne za free hyba na licencji MIT ale glowy nie dam). O ile jednak przykłady w php zrobione w oparciu o biblioteki xml-rpc z PEAR'a to java cos nie chce jesc. Webservice istnieje i dziala co potwierdzilem przez klienta napisanego w javie.

Tak naprawde nie wiem co tam sie dokladnie w srodku dzieje. Czy zachodzi jakas serializacjia ktora musi byc znana po stronie klienta.
dostaje w firefoksie server error 500 i status 80004005. co zdaje sie ma oznaczac ze jest jakas niezgodnosc protokolarna ;)

Czy ktos z was probowal zrobic cos podobnego?
Ostatecznosc to chyba bedzie napisanie XPCOMa implementujacego polaczenie zgodne z burlap czy hessian. Jednak wolal bym tego uniknac chociazby dla tego ze nie chce wywazac otwartych dzwi i cos mi mowi ze jest jakas metoda uzywania mozillowego xml-rpc z javie.

dzieki za wszelkie wskazowki.
isthar
 
Posty: 4
Z nami od: 11 grudnia 2004, 22:28

No to sobie sam odpowiem ... a co ;)

Postautor: isthar » 13 grudnia 2004, 23:50

Przeglądarka: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

Przejzalem sobie jak wygladaja pakiety (ethrealem) i wyglada na to, ze burlap ma troszke inna skladnie requestu (hessiana nawet nie ruszalem jako ze jest binarny).

powinna mi wystarczyc przerobka w nsXmlRpcClient.js
szkoda co prawda ze temat zostal olany przez mozilla team. Ale co tam jakos sobie mozna z tym poradzic.

Pozdrawiam, i dzieki za inspiracje ;)
isthar
 
Posty: 4
Z nami od: 11 grudnia 2004, 22:28

Postautor: Gość » 14 grudnia 2004, 04:04

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.7.5) Gecko/20041107 Firefox/1.0

Wybacz, ale nie podales jakich technologii obslugujacych XUL uzywasz... Gecko? Jesli tak to jakie? XML-RPC jest niezle obslugiwany przez komponenty XPCOM w Gecko.
Nie podales chocby kawalka kodu ktorym probojesz nawiazac komunikacje - generalnie trudno pomoc :(
Gość
 

Postautor: isthar » 14 grudnia 2004, 10:29

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0

W sumie racja.
Uzywam gecko (Firefox 1.0) - tak po prawdzie jak bym uzywal thinlet to bym tu nawet nie napisal.

Kod: Zaznacz cały
function getClient() {
     return Components.classes['@mozilla.org/xml-rpc/client;1']
         .createInstance(Components.interfaces.nsIXmlRpcClient);
}

var xmlRpcClient;
function getXmlRpc() {
     if (!xmlRpcClient) xmlRpcClient = getClient();
     return xmlRpcClient;
}

function callAsync() {
     var xmlRpc = getXmlRpc();
     xmlRpc.init("http://localhost:8080/ws/testService");
          xmlRpc._isBurlap = true;
          var method = "getTestState";
          var stateCode = xmlRpc.createType(xmlRpc.STRING, {});
          stateCode.data = " be happy:P ";

          alert ("call:"+method);
     xmlRpc.asyncCall(Listener, null, method, [stateCode], 1);
 }

 var Listener = {
      onResult: function(client, ctxt, result) {
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
        result = result.QueryInterface(Components.interfaces.nsISupportsCString);
       // --
       document.getElementById('lblPredict').setAttribute('value', result.data);
     },
     onFault: function(client, ctxt, fault) {
             alert('Fault! ' + fault + '\n');
     },
     onError: function(client, ctxt, status, errorMsg) {
        alert('Error! (' + status.toString(16) + ') ' + errorMsg + '\n');
   }
};


function getPrediction (){
        netscape.security.PrivilegeManager.enablePrivilege(
                'UniversalXPConnect UniversalBrowserAccess');
        callAsync();
}


W miedzyczasie doczytalem ze Burlap i Hessian z caucho tak nie za bardzo sa zgodne z RPC 2. Szkoda jednak ze nie sa obslugiwane bo sa troche lzejsze niz RPC2 nie mowiac juz o SOAP.
Tak wiec sa dwa rozwiazania - albo nsXmlRpcClient w wersji Burlap albo webserwis RPC2. Wyglada na to ze JaxRpc - przynajmniej w springu.
isthar
 
Posty: 4
Z nami od: 11 grudnia 2004, 22:28

Final solution

Postautor: isthar » 15 maja 2005, 12:57

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.5) Gecko/20041108 Firefox/1.0

Ostateczne rozwiazanie to jest bardzo oczyswiste:

XmlRpcServiceExporter dla springa. Wszystko znajdziecie na:

http://arjen.jteam.nl/index.php/archive ... eexporter/


Poczatkowo zaczelem piasac to jako modyfikacje clienta XML-RPC tak by obslugiwal burlapa. Ale ze wzgledu na restrykcje moglo to dzialac jedynie z poziomu chrome. Tak wiec idac dalej zrobilem z tego extenssion do firefoxa. Ale teraz po znalezieniu tego rozwiazania ztawiam na prostote.

Dzieki za cierpliwosc. Pozdrawiam tych nielicznych ktorzy uzywaja tu Javy.
isthar
 
Posty: 4
Z nami od: 11 grudnia 2004, 22:28


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Baidu [Spider], Bing [Bot], dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: