RE: Cayenne and JAX-WS / JAXB / GWT

From: Scott Anderson (sanderso..irvana.com)
Date: Thu May 29 2008 - 11:32:20 EDT

  • Next message: Andrus Adamchik: "[ANN] Cayenne 3.0M4 Released"

    Generally speaking, all persistence layers work similarly in this
    regard. You could even say that JDBC works this way, in that serializing
    a ResultSet to the client would be an unsafe operation for the same
    reasons I mentioned below.

    Somewhat off-topic, I've picked up the RC of GWT 1.5; I've been using it
    for less than a week, and I've already fallen in love. It feels much
    more like writing a desktop application than a web application.

    With the GWT-RPC framework, you mark your beans with a special (blank)
    interface called IsSerializable, and then you can pass them back and
    forth freely between the client and server code. As the client code is
    written in Java, there's no fussing when it comes time to refactor the
    beans. It imposes asynchronous calls, which is a good habit, as it
    prevents the client from being able to lock up quite so easily.

    It also claims to produce JavaScript that runs faster than hand written
    code. I'm hesitant to believe that statement, but what I will say for
    certain is that the framework has reduced the development cycle of the
    application I'm working on from months to days.

    -----Original Message-----
    From: Jon Sharp [mailto:jo..ampgroundautomation.com]
    Sent: Wednesday, May 28, 2008 11:29 PM
    To: use..ayenne.apache.org
    Subject: Re: Cayenne and JAX-WS / JAXB

    Scott,

    Thanks so much for the input. It's exactly what I was looking for.
    Honestly, I wasn't entirely sure of the approach, either. It seemed
    to me to make sense that since we have a data object such as a
    "Campground" that Cayenne has already defined for us, that we would
    reuse this object in our web service layer, as well. I did consider
    the fact that this object's purpose was more specific for ORM
    purposes, but it seemed that it might be useful as a general purpose
    definition of a given entity. However, you do raise some good points
    I hadn't considered about validation. I guess I thought we might be
    able to add that validation to the data object itself, but perhaps not.

    I am prepared to implement the bean classes necessary, I just thought
    it worthwhile to explore the possibility of marshaling cayenne data
    objects into XML for use directly with our web services. If anyone
    else has any further input on the matter, please let me know. Do
    Hibernate or Toplink classes work the same way? Does anyone use these
    classes like I'm suggesting? Anyway, let me know and thanks again for
    the input!

    --
    Jon
    

    Jon Sharp CTO & Senior Engineer Campground Automation Systems, Inc. jo..ampgroundautomation.com (615) 579-5868 www.campgroundautomation.com

    On May 28, 2008, at 3:13 PM, Scott Anderson wrote:

    > On a side note, if you really wish to expose the persistence layer > directly to the client, you might consider building cayenne directly > in > to your application, and avoid the middleman. > > As I see it, the whole point of having a WS is to validate data before > it hits the database. > > -----Original Message----- > From: Scott Anderson [mailto:sanderso..irvana.com] > Sent: Wednesday, May 28, 2008 4:05 PM > To: use..ayenne.apache.org > Subject: RE: Cayenne and JAX-WS / JAXB > > Jon, what is the reason you wish to do this? What you're proposing > breaks the whole point of making a layer out of persistence; it is > taboo > to even speak of serializing your persistence layer in any direction > other than to or from the database, which is what Cayenne does for > you. > Consider what might happen if you were to take a persistence object > off > the wire and put it in to the database without validation of both the > data, and credentials. The last thing you want is for a typo or a NULL > relationship to result in the cascading nuking of foreign keys. > > The standard approach is to create serializable "beans" of a similar, > but in reality generally more simplistic, structure to your database. > This restricts any possibility of transferring information that is not > intended to be sent to the client, and forces you to validate all > incoming data. Since you should be validating all incoming data > anyways, > it won't be any extra work for you to take this step. > > Regards, > Scott > > -----Original Message----- > From: Jon Sharp [mailto:jo..ampgroundautomation.com] > Sent: Wednesday, May 28, 2008 3:30 PM > To: use..ayenne.apache.org > Subject: Re: Cayenne and JAX-WS / JAXB > > Andrus, > > Thanks for the input. I've been playing around with this annotations > approach, but it seems I'm going to have to get into the cayenne > source a bit more than I expected. It looks like I'll need to > annotate the Interfaces themselves (DataObject). I've checked out the > latest Cayenne trunk, but have had some trouble with it. I'll see if > I can't find a milestone to work from. In the meantime, as I see it, > this may be a real benefit to Cayenne to allow for XML serialization > of Cayenne data objects using JAXB. I imagine this would be a popular > feature for many, whether implementing web services or not. If I'm > going to put resources on this on our end, I'd certainly be interested > in feeding these changes into Cayenne proper. What do you guys > think? Is this as good a solution as I think it might be? I'd love > to hear any input on this. And perhaps the dev list is a more > appropriate place for this discussion. > > Thanks again, > Jon > > -- > Jon Sharp > CTO & Senior Engineer > Campground Automation Systems, Inc. > jo..ampgroundautomation.com > (615) 579-5868 > www.campgroundautomation.com > > > > > On May 27, 2008, at 3:01 AM, Andrus Adamchik wrote: > >> I never used JAXB, although I evaluated it briefly in the past. With >> everyone gradually moving to Java 6, it probably warrants a closer >> looks from us in Cayenne. More to the point, I think the annotations >> approach should work, but that will require some experimentation. So >> try it, and let us know if you run into any troubles. >> >> Andrus >> >> >> On May 27, 2008, at 2:51 AM, Jon Sharp wrote: >>> Hello all, >>> >>> We are using Cayenne 3.0M3 for ORM in our project and are exposing >>> this database using SOAP Web Services. We're using the latest Sun >>> Metro stack (1.2), consisting of the JAX-WS and JAXB frameworks. >>> In attempting to use Cayenne Data objects as either return types or >>> method parameters for our defined..ebMethod's, we are greeted with >>> an error that indicates JAXB does not handle interfaces. For those >>> who may not be familiar with JAX-WS/JAXB, JAXB is responsible for >>> marshalling java objects into XML, and this is of course necessary >>> for use in SOAP web services provided by the JAX-WS framework. >>> According to https://jaxb.dev.java.net/guide/ >>> Mapping_interfaces.html, there are some solutions for this issue, >>> but it appears that it may involve code changes to Cayenne. I'm >>> not a Cayenne developer, so I cannot say how feasible or practical >>> this approach may be. Perhaps someone could comment on that, but >>> more important to me at this point is determining whether anyone >>> has been successful in marshalling cayenne data objects to XML >>> using JAXB? >>> >>> Thanks, >>> Jon >>> >>> -- >>> Jon Sharp >>> CTO & Senior Engineer >>> Campground Automation Systems, Inc. >>> jo..ampgroundautomation.com >>> (615) 579-5868 >>> www.campgroundautomation.com >>> >>> >>> >>> >>> >> >



    This archive was generated by hypermail 2.0.0 : Thu May 29 2008 - 11:33:27 EDT