ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Demetris <demet...@ece.neu.edu>
Subject Re: Woden on mobile devices
Date Thu, 05 May 2011 18:49:50 GMT
Hi Martin,

sorry for the long delay in responding but I am sure you know how it is 
with multiple
projects.

I certainly agree with you both on the comm and msg standards on new 
phones - it is an ever
changing world there. It would certainly be worth looking into JSRs for 
addressing REST
on mobile devices. I did read the WADL standard and it does seem promising.

I am going to be traveling for a bit longer but I will stay in touch and 
either email or eventually
a face-to-face meeting that would certainly be good.

Thanks

On 4/22/2011 11:04 AM, Martin Gainty wrote:
> it is difficult with PDA's coming out every 6 months to elucidate from 
> the PDA managers which communication protocols and messaging standards 
> these new PDAs will be supporting
> *or* as in the case of MS and Apple are they crafting their own ...?
> it would be nice to find at least 1 JSR to address REST based 
> messaging standards for PDAs
>
> i think there is a future for REST consuming clients on PDAs and since 
> we're consuming alot of bandwidth here
> we could meet somewhere in btown..anyone that wants to participate is 
> invited (especially angel investors)
>
> perhaps WADL is the way..?
>
> keep in touch!
> Martin
> ______________________________________________
> Jogi és Bizalmassági kinyilatkoztatás/Verzicht und 
> Vertraulichkeitanmerkung/Note de déni et de confidentialité
> Ez az üzenet bizalmas.  Ha nem ön az akinek szánva volt, akkor kérjük, 
> hogy jelentse azt nekünk vissza. Semmiféle továbbítása vagy 
> másolatának készítése nem megengedett.  Ez az üzenet csak ismeret 
> cserét szolgál és semmiféle jogi alkalmazhatósága sincs.  Mivel az 
> electronikus üzenetek könnyen megváltoztathatóak, ezért minket semmi 
> felelöség nem terhelhet ezen üzenet tartalma miatt.
>
> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene 
> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede 
> unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. 
> Diese Nachricht dient lediglich dem Austausch von Informationen und 
> entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten 
> Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den 
> Inhalt uebernehmen.
> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire
prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe
quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information
seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les
email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune
responsabilité pour le contenu fourni.
>
>
>
>
>
> ------------------------------------------------------------------------
> Date: Fri, 22 Apr 2011 10:39:24 -0400
> From: demetris@ece.neu.edu
> To: dev@ws.apache.org
> Subject: Re: Woden on mobile devices
>
>
> Hi Martin,
>
> yes exactly and that's the reason we switched over to REST services 
> and particularly for
> mobile devices. Even though ksoap2 on Android seems to be fairly 
> efficient it's still a bit
> heavier that the REST/HTTP mechanisms.
> I also looked into WADL but I am not sure how mature or generally 
> accepted it is at this point.
>
> Regarding the publishing of the REST service, as you pointed out 
> there's not a standard
> method to publish them - some ideas I saw generate documents that 
> describe the directory
> hierarchy for the server side along with the URL specifications on how 
> to reach the various
> resources. I use Ajax for building clients for these services. But I 
> can certainly work with you
> on coming up with may be a more general architecture.
>
> In any case, thanks for the feedback and I will let you know about 
> this once I give it a bit
> more thought. I appreciate the information and help Martin.
>
> On 4/21/2011 11:30 AM, Martin Gainty wrote:
>
>     not yet here is their doc
>
>     Please note that SOAP introduces some significant overhead for web
>     services that may be problematic for mobile devices. If you have
>     full control over the client and the server, a REST based
>     architecture may be more adequate.
>
>     maybe you can create a testcase and we can come up with an
>     architecture to
>     1)publish the REST service
>     2)create a Stub client which will consume the REST message
>
>     did you have anything specific in mind?
>
>     Martin
>     ______________________________________________
>     Do not alter or disrupt this transmission.
>
>
>
>
>     ------------------------------------------------------------------------
>     Date: Thu, 21 Apr 2011 10:00:15 -0400
>     From: demetris@ece.neu.edu <mailto:demetris@ece.neu.edu>
>     To: dev@ws.apache.org <mailto:dev@ws.apache.org>
>     Subject: Re: Woden on mobile devices
>
>
>     Hi Martin,
>
>     apologies for re-posting this one - do you have an idea on whether
>     the segment you sent below
>     can handle REST-annotated WSDL files?
>
>     Thanks
>
>     On 4/16/2011 10:54 AM, Demetris wrote:
>
>
>         Hi Martin,
>
>         isn't this parsing a SOAP WSDL file using the ksoap2 libs? Can
>         it handle documents that describe
>         REST as well? I guess it should but i am not sure. I will need
>         to look into a bit more carefully.
>
>         I appreciate the feedback
>
>         On 4/15/2011 12:12 PM, Martin Gainty wrote:
>
>             http://sourceforge.net/projects/ksoap2/files/ksoap2/2.1.2/ksoap2-j2me-core-2.1.2.jar/download
>             take a look at org.ksoap2.transport.HttpTransport
>
>             ksoap2\target\classes>javap
>             .\org\ksoap2\transport\HttpTransport
>             public class org.ksoap2.transport.HttpTransport extends
>             org.ksoap2.transport.Transport{
>                 org.ksoap2.transport.ServiceConnection connection;
>                 java.io.OutputStream os;
>                 java.io.InputStream is;
>                 public
>             org.ksoap2.transport.HttpTransport(java.lang.String);
>                public void call(java.lang.String,
>             org.ksoap2.SoapEnvelope)       throws java.io.IOException,
>             org.xmlpull.v1.XmlPullParserException;
>                 public void reset();
>                 protected org.ksoap2.transport.ServiceConnection
>             getServiceConnection()
>               throws java.io.IOException;
>             }
>
>             //vs the axis HttpTransportReceiver
>             public class
>             org.apache.axis2.transport.http.HTTPTransportReceiver {
>                 public static Map getGetRequestParameters(String
>             requestURI) {
>                     Map map = new HashMap();
>                     if (requestURI == null || "".equals(requestURI)) {
>                         return map;
>                     }
>                     char[]       chars = requestURI.toCharArray();
>                     final int NOT_BEGUN = 1500;
>                     final int INSIDE_NAME = 1501;
>                     final int INSIDE_VALUE = 1502;
>                     int state = NOT_BEGUN;
>                     StringBuffer name = new StringBuffer();
>                     StringBuffer value = new StringBuffer();
>
>                     for (int index = 0; index < chars.length; index++) {
>                         if (state == NOT_BEGUN) {
>                             if (chars[index] == '?') {
>                                 state = INSIDE_NAME;
>                             }
>                         } else if (state == INSIDE_NAME) {
>                             if (chars[index] == '=') {
>                                 state = INSIDE_VALUE;
>                             } else {
>                                 name.append(chars[index]);
>                             }
>                         } else if (state == INSIDE_VALUE) {
>                             if (chars[index] == ',') {
>                                 state = INSIDE_NAME;
>                                 map.put(name.toString(),
>             value.toString());
>                                 name.delete(0, name.length());
>                                 value.delete(0, value.length());
>                             } else {
>                                 value.append(chars[index]);
>                             }
>                         }
>                     }
>                     if (name.length() + value.length() > 0) {
>                         map.put(name.toString(), value.toString());
>                     }
>                     return map;
>                 }
>
>                 public static String
>             getServicesHTML(ConfigurationContext configurationContext) {
>                     String temp = "";
>                     Map services =
>             configurationContext.getAxisConfiguration().getServices();
>                     Hashtable erroneousServices =
>                            
>             configurationContext.getAxisConfiguration().getFaultyServices();
>                     boolean status = false;
>                     if ((services != null) && !services.isEmpty()) {
>                         status = true;
>                         Collection serviceCollection = services.values();
>                         temp += "<h2>" + "Deployed services" + "</h2>";
>                         for (Iterator it =
>             serviceCollection.iterator(); it.hasNext();) {
>
>                             AxisService axisService = (AxisService)
>             it.next();
>
>                             Iterator iterator =
>             axisService.getOperations();
>
>                             temp += "<h3><a href=\"" +
>             axisService.getName() + "?wsdl\">" +
>                                     axisService.getName() + "</a></h3>";
>
>                             if (iterator.hasNext()) {
>                                 temp += "Available operations <ul>";
>
>                                 for (; iterator.hasNext();) {
>                                     AxisOperation axisOperation =
>             (AxisOperation) iterator.next();
>
>                                     temp += "<li>" +
>             axisOperation.getName().getLocalPart() + "</li>";
>                                 }
>
>                                 temp += "</ul>";
>                             } else {
>                                 temp += "No operations specified for
>             this service";
>                             }
>                         }
>                     }
>                     if ((erroneousServices != null) &&
>             !erroneousServices.isEmpty()) {
>                         temp += "<hr><h2><font color=\"blue\">Faulty
>             Services</font></h2>";
>                         status = true;
>
>                         Enumeration faultyservices =
>             erroneousServices.keys();
>
>                         while (faultyservices.hasMoreElements()) {
>                             String faultyserviceName = (String)
>             faultyservices.nextElement();
>
>                             temp += "<h3><font color=\"blue\">" +
>             faultyserviceName + "</font></h3>";
>                         }
>                     }
>                     if (!status) {
>                         temp = "<h2>There are no services deployed</h2>";
>                     }
>                     temp = "<html><head><title>Axis2:
>             Services</title></head>" + "<body>" + temp
>                             + "</body></html>";
>
>                     return temp;
>                 }
>                 public static String printServiceHTML(String serviceName,
>                                                      
>             ConfigurationContext configurationContext) {
>                     String temp = "";
>                     try {
>                         AxisConfiguration axisConfig =
>             configurationContext.getAxisConfiguration();
>                         AxisService axisService =
>             axisConfig.getService(serviceName);
>                         Iterator iterator = axisService.getOperations();
>                         temp += "<h3>" + axisService.getName() + "</h3>";
>                         temp += "<a href=\"" + axisService.getName() +
>             "?wsdl\">wsdl</a> <br/> ";
>                         temp += "<i>Service Description :  " +
>             axisService.getServiceDescription() +
>                                 "</i><br/><br/>";
>                         if (iterator.hasNext()) {
>                             temp += "Available operations <ul>";
>                             for (; iterator.hasNext();) {
>                                 AxisOperation axisOperation =
>             (AxisOperation) iterator.next();
>                                 temp += "<li>" +
>             axisOperation.getName().getLocalPart() + "</li>";
>                             }
>                             temp += "</ul>";
>                         } else {
>                             temp += "No operations specified for this
>             service";
>                         }
>                         temp = "<html><head><title>Axis2:
>             Services</title></head>" + "<body>" + temp
>                                 + "</body></html>";
>                     }
>                     catch (AxisFault axisFault) {
>                         temp = "<html><head><title>Service has a
>             fualt</title></head>" + "<body>"
>                                 + "<hr><h2><font color=\"blue\">" +
>             axisFault.getMessage() +
>                                 "</font></h2></body></html>";
>                     }
>                     return temp;
>                 }
>             }
>
>             //since neither class is an interface we would need to
>             refactor our
>             public class
>             org.apache.axis2.transport.http.NewHTTPTransportReceiver
>             extends org.ksoap2.transport.HttpTransport
>             {
>             //all of the legacy HttptransportReceiver code
>             //add in overrides for attrs and methods from HttpTransport
>             }
>
>             //assuming we setup a simple client which implements
>             org.ksoap2.transport.HttpTransport
>             public class org.ksoap2.SoapEnvelope extends java.lang.Object{
>                 public static final int VER10;
>                 public static final int VER11;
>                 public static final int VER12;
>                 public static final java.lang.String ENV2001;
>                 public static final java.lang.String ENC2001;
>                 public static final java.lang.String ENV;
>                 public static final java.lang.String ENC;
>                 public static final java.lang.String XSD;
>                 public static final java.lang.String XSI;
>                 public static final java.lang.String XSD1999;
>                 public static final java.lang.String XSI1999;
>                 public java.lang.Object bodyIn;
>                 public java.lang.Object bodyOut;
>                 public org.kxml2.kdom.Element[] headerIn;
>                 public org.kxml2.kdom.Element[] headerOut;
>                 public java.lang.String encodingStyle;
>                 public int version;
>                 public java.lang.String env;
>                 public java.lang.String enc;
>                 public java.lang.String xsi;
>                 public java.lang.String xsd;
>                 public static boolean stringToBoolean(java.lang.String);
>                 public org.ksoap2.SoapEnvelope(int);
>                 public void parse(org.xmlpull.v1.XmlPullParser)      
>             throws java.io.IOExcep
>             tion, org.xmlpull.v1.XmlPullParserException;
>                 public void
>             parseHeader(org.xmlpull.v1.XmlPullParser)       throws
>             java.io.I
>             OException, org.xmlpull.v1.XmlPullParserException;
>                 public void
>             parseBody(org.xmlpull.v1.XmlPullParser)       throws
>             java.io.IOE
>             xception, org.xmlpull.v1.XmlPullParserException;
>                 public void write(org.xmlpull.v1.XmlSerializer)      
>             throws java.io.IOExcep
>             tion;
>                 public void
>             writeHeader(org.xmlpull.v1.XmlSerializer)       throws
>             java.io.I
>             OException;
>                 public void
>             writeBody(org.xmlpull.v1.XmlSerializer)       throws
>             java.io.IOE
>             xception;
>                 public void setOutputSoapObject(java.lang.Object);
>             }
>
>             vs our own javax.xml.soap.SOAPEnvelope
>             public interface SOAPEnvelope extends SOAPElement {
>                 /**
>                  * Creates a new <CODE>Name</CODE> object initialized
>             with the given local name, namespace
>                  * prefix, and namespace URI.
>                  * <p/>
>                  * <P>This factory method creates <CODE>Name</CODE>
>             objects for use in the SOAP/XML document.
>                  *
>                  * @param localName a <CODE>String</CODE> giving the
>             local name
>                  * @param prefix    a <CODE>String</CODE> giving the
>             prefix of the namespace
>                  * @param uri       a <CODE>String</CODE> giving the
>             URI of the namespace
>                  * @return a <CODE>Name</CODE> object initialized with
>             the given local name, namespace prefix,
>                  *         and namespace URI
>                  * @throws SOAPException if there is a SOAP error
>                  */
>                 public abstract Name createName(String localName,
>                                                 String prefix,
>                                                 String uri)
>                         throws SOAPException;
>                 public abstract Name createName(String localName)
>             throws SOAPException;
>                 public abstract SOAPHeader getHeader() throws
>             SOAPException;
>                 public abstract SOAPBody getBody() throws SOAPException;
>                 public abstract SOAPHeader addHeader() throws
>             SOAPException;
>                 public abstract SOAPBody addBody() throws SOAPException;
>             }
>
>             //so you would need a new uber SOAPEnvelope class which
>             extends base class SoapEnvelope implements SOAPEnvelope
>
>             public class NewSOAPEnvelope extends
>             org.ksoap2.SoapEnvelope implements
>             javax.xml.soap.SOAPEnvelope
>             newHttpTransportReceiver would reference the new uber
>             SOAPEnvelope class
>                public void call(java.lang.String,
>             NewSoapEnvelope)       throws java.io.IOException,
>             org.xmlpull.v1.XmlPullParserException;
>
>             does this conform to your understanding?
>             Martin Gainty
>             ______________________________________________
>             Note de déni et de confidentialité
>             Ce message est confidentiel et peut être privilégié. Si
>             vous n'êtes pas le destinataire prévu, nous te demandons
>             avec bonté que pour satisfaire informez l'expéditeur.
>             N'importe quelle diffusion non autorisée ou la copie de
>             ceci est interdite. Ce message sert à l'information
>             seulement et n'aura pas n'importe quel effet légalement
>             obligatoire. Étant donné que les email peuvent facilement
>             être sujets à la manipulation, nous ne pouvons accepter
>             aucune responsabilité pour le contenu fourni.
>
>
>
>
>             > Date: Fri, 15 Apr 2011 11:02:37 -0400
>             > From: demetris@ece.neu.edu <mailto:demetris@ece.neu.edu>
>             > To: dev@ws.apache.org <mailto:dev@ws.apache.org>
>             > Subject: Woden on mobile devices
>             >
>             > Hi all,
>             >
>             > I think Woden can parse WSDL 2.0 that describe REST
>             services correct?
>             > Is there a mobile version of Woden for parsing such WSDL
>             documents on
>             > Android?
>             >
>             > Thanks
>             >
>             >
>             ---------------------------------------------------------------------
>             > To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>             <mailto:dev-unsubscribe@ws.apache.org>
>             > For additional commands, e-mail: dev-help@ws.apache.org
>             <mailto:dev-help@ws.apache.org>
>             >
>

Mime
View raw message