axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dennis Sosnoski <...@sosnoski.com>
Subject Re: Questions about Axis2
Date Sun, 17 Dec 2006 06:32:34 GMT
For sending objects between Java applications RMI is generally your best 
bet. The only reason to use SOAP/XML is if you want to allow non-Java 
clients or servers to be used.

If you *do* want to allow for non-Java support, JiBX data binding lets 
you work with java.util.Collection classes without much effort. The 
upcoming Axis2 1.1.1 release will have improved support for what's 
called "unwrapped" interfaces using JiBX, and I'll be releasing a new 
version of the JiBX tools that provide code->binding and 
code+binding->schema support in conjunction with the Axis2 1.1.1 
release. These new tools include support for Java 5 generic collections, 
so that handling the type of data structures you described becomes very 
easy using JiBX.

The main downside of JiBX is the limited schema support. It's about on a 
par with ADB, and much more limited than XMLBeans. But JiBX is primarily 
focused on working with existing Java code, so for your case it's 
probably the easiest way to implement web services.

  - Dennis

Dennis M. Sosnoski
SOA and Web Services in Java
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117



Vanfleet, David wrote:
> Thanks for your comments Anne, what you're saying makes since to me.
> Some of the data I'll be transferring is raw XML so SOAP sounds like a
> reasonable protocol for that. However, other data is in the form of Java
> objects and it would be nice if it could be transferred and received as
> a Java object. How do I specify data binding for those objects (such as
> the one below)? is this done through the services.xml file?
>
> I do think that SOAP is the best protocol for what I need. However, if I
> was to look into using anther protocols do you know of any that you can
> recommend? I could always open an HTTP connection to a Java servlet and
> pass the data as a serialized Java object, I'm not sure what the
> advantages or disadvantages are for doing this?
>
> Thanks again,
> David
>
> -----Original Message-----
> From: Anne Thomas Manes [mailto:atmanes@gmail.com] 
> Sent: Saturday, December 16, 2006 12:01 PM
> To: axis-user@ws.apache.org
> Subject: Re: Questions about Axis2
>
> David,
>
> The first thing you need to understand is that SOAP is not an
> especially good protocol for transferring language-specific
> collections. If your goal is to implement a Java-to-Java client/server
> application, perhaps you should consider using a different protocol --
> one that supports the Java type system. SOAP used the XML Schema type
> system. For best results using SOAP, your service interface should use
> types that map reasonably well to the XML Schema type system. (i.e.,
> don't try to use Vector or List to generate your interface -- use
> simple arrays instead)
>
> The next thing you need to understand is that there is a layer of
> indirection between the data/object model used by the server and
> data/object model used by the client. Just because you use
> language-specific collections on the server to generate your WSDL
> interface, those collections are not apparent to the client. The
> client only sees the schema representation of the objects. If you want
> your client to convert that schema into the same Java object types
> that you use on the server, then you need to specify the data binding
> mapping rather than using a tool like wsdl2java to generate it.
>
> Anne
>
> On 12/16/06, Vanfleet, David <vanfleet@ugs.com> wrote:
>   
>>
>>
>> Hi,
>>
>> I'm new to both Axis2 and web services and I'm having a hard time
>>     
> grasping
>   
>> all the various types of databinding that can be created (POJO, AXIOM,
>>     
> ADB,
>   
>> XMLBeans and JiBX). I have a couple of general questions about Axis2
>>     
> and web
>   
>> services.
>>
>>
>>
>> I need to create a service that can pass complex objects between the
>>     
> client
>   
>> and the server. Something like my modified weather example below.
>>
>>
>>
>> My questions about this are as follows:
>>
>>
>>
>> 1) In the testing I've done I noticed that it fails when there are any
>> java.util.Vector or java.util.List objects within the object being
>> transferred. I have seen several other posts about this but with no
>> responses. Does anyone know why this is the case? How can I get around
>>     
> this?
>   
>>
>>   I read that using an ArrayList object will work which I did verify,
>>     
> but I
>   
>> need to be able to user List and Vectors.
>>
>>
>>
>> 2) In the following modified Weather class where I have an ArrayList
>>     
> called
>   
>> children with its set and get methods (this is from the
>> sample.pojo.rpcclient package distributed with Axis2). When I send
>>     
> this
>   
>> weather class on a round trip to the WeatherService service calling
>>     
> the
>   
>> setWeather then the getWeather methods, then I take the returned
>>     
> weather
>   
>> class and call it's getChildren method I end up with an ArrayList of
>> OMEElement objects rather than Weather objects as I wanted. I
>>     
> understand
>   
>> that everything is converted to XML during transport, but how do I get
>>     
> these
>   
>> elements mapped back into the Weather class?
>>
>>
>>
>>   package sample.pojo.data;
>>
>>   import java.util.ArrayList;
>>
>>
>>
>>   public class Weather{
>>
>>     float temperature;
>>
>>     String forecast;
>>
>>     boolean rain;
>>
>>     float howMuchRain;
>>
>>     ArrayList<Weather> children=null;
>>
>>
>>
>>     public Weather() {
>>
>>       children=new ArrayList<Weather>();
>>
>>     }
>>
>>
>>
>>     public Weather(String forecast) {
>>
>>       children=new ArrayList<Weather>();
>>
>>       this.forecast=forecast;
>>
>>     }
>>
>>     .
>>
>>     .
>>
>>     .
>>
>>
>>
>>     public void setChildren(ArrayList<Weather> c) {
>>
>>       children=c;
>>
>>     }
>>
>>
>>
>>     public void addChild(Weather w) {
>>
>>       children.add(w);
>>
>>     }
>>
>>
>>
>>     public ArrayList<Weather> getChildren() {
>>
>>       return children;
>>
>>     }
>>
>>   }
>>
>>
>>
>> 3) Based on needing to transfer this kind of object what type of
>>     
> databinding
>   
>> would be best for me to use. Are there some that would work better
>>     
> than
>   
>> others, In my testing I'm using this POJO sample? But I'm thinking
>>     
> that I
>   
>> should use ADB or XMLBean. Any suggestions?
>>
>>
>>
>> 4) The client that will be accessing this service will be running
>>     
> within
>   
>> both a standalone application and a Java applet. For the sake of the
>>     
> Java
>   
>> applet I would like the client footprint to be as small as possible.
>>     
> Based
>   
>> on this requirement are there some databindings that have a smaller
>> footprint than others?
>>
>>
>>
>> I realized that I'm not grasping all the concepts that I need to
>>     
> understand
>   
>> here, I'm not even sure I'm asking the right questions? I have been
>>     
> looking
>   
>> at the documentation and samples that come with Axis2. Are there any
>>     
> other
>   
>> good resources that I can look at that might help me out here, such as
>>     
> some
>   
>> good tutorials or FAQ's. Some more good code samples would be helpful
>>     
> tool.
>   
>> Any comments offered would be greatly appreciated.
>>
>>
>>
>> Thanks,
>>
>> David
>>
>>
>>     
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Mime
View raw message