Hi Philip,

I have some suggestions for you. First you should not generate the wsdl from your implementation classes. We did this approach in the start of our SOA. The problem is that when you change the version of your service framework you can end up with a slighty different wsdl. So you change your service contract when you only wanted to change an implementation detail. I have written a howto on generating the wsdl from java definitions and then generate the implementation stubs from it: http://cwiki.apache.org/CXF20DOC/defining-contract-first-webservices-with-wsdl-generation-from-java.html

The second thing is to apply best practices from API design to your service contract. Imagine many people are using your service contract. That means they depend on the contract staying stable. If you use your pojos as a service contract it means that any change you make to them will break your service contract. So I would suggest to define the contract separately from your pojos and do a mapping from the contract data elements to the inner pojos. If the pojos you are talking about are already api quality then you could use them in the contract. But then you still will have the problem above. I found a nice article about contract design: http://www.infoq.com/articles/contract-versioning-comp2

The last thing is I would use complex type style for the data. It is easier to understand than parameter lists and more type safe then maps. In complex types you can also mark elements optional so people do not always have to set all elements.

Hope I could help a little.

Greetings

Christian


Phillip Rhodes schrieb:
This is a design issue that I continue to stumble across....

I am at a crossroads between passing instances of my pojo objects as data containers VS. a long list of parameters. Having worked with both cases, the long list of parameters gets very unmanageable. (What was that 10th parameter?....) Another option is to pass a map of parameters, but that is also problematic since you have all kinds of code to add and process the map.

That leaves me with passing my pojo's as a data container to my web service. What are the drawbacks of such a design? Or Is the time invested in a map of parameters worth it?

The API that I am designing is pretty much like a JCR repository, but one that provides some additional services around images and searching, and most importantly, super fast.


Thank you for your time.

Phillip



--

Christian Schneider
---
http://www.liquid-reality.de

Reply via email to