wood burning stoves 2.0*
The moose likes Web Services and the fly likes JAX-WS - domain model Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Web Services
Bookmark "JAX-WS - domain model " Watch "JAX-WS - domain model " New topic
Author

JAX-WS - domain model

John Pradeep.v
Ranch Hand

Joined: Jul 21, 2008
Posts: 59
Hi Folks,
I am recently working on JAX-WS (a newbie, interested to learn web services), I have a design concern which would be a simple hurdle to overcome but i am not finding the solution anywhere.

okay, consider if i have to use web services in an organization to fetch details about an employee... i write a web service which fetches the details and provides me Employee details
At the service consumer i use wsimport to generate the classes so i would get an Employee object from the service (i am very happy about it) which makes my job dead easy!

But consider the service client and the web service both are within the organization and they have a "domain model" which is same and shared!!! i.e., the same Employee object (and all other objects employee composes) used by the web service is used by the web service client as well

but since i use wsimport, the Employee class generated by wsimport is actually a different class which forces me to transform the wsimport generated Employee object to the Employee object present in my domain model

Is there any way i can avoid wsimport from generating stub and use the Classes i already have? this way i can avoid unnecessary transformations!

Any help in this regard will be really helpful.


Regards,
John







Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
    
    1
Hi!
Assuming that you are using JAXB for marshalling and unmarshalling; have you considered annotating the existing model classes, such as Employee, using JAXB annotations?
In such a case, to make your job easier, you can first generate JAXB beans (and other artifacts) from the WSDL using wsimport and then look at the annotations in the JAXB bean classes that correspond to your model classes.
Later, when using wsimport to generate, for instance, client artifacts, you will have to use an external JAXB binding file (using the -b option) in order to persuade wsimport to use your custom JAXB bean classes.

Personally, I think I would prefer the following approach:
- Create one or more XML schemas describing the model objects.
- Use the JAXB schema compiler (XJC - a plugin is available for Eclipse and IntelliJ) to generate model classes from the XML schema(s).
In this approach, the XML schemas describing the model objects is the "master" from which the model classes are created.
Best wishes!
John Pradeep.v
Ranch Hand

Joined: Jul 21, 2008
Posts: 59
Thanks a lot Ivan... i think the first option (annotations) sounds good to me.. the reason being that i dont want my domain model classes to be generated from an XSD, as it can keep evolving.
I actually feel little reluctant to annotate the domain classes with JAXB annotations but considering that only few classes (those which are transmitted from service to service consumer and vice versa) will be annotated, this option would look neat.

Let me give it a try...

Regards,
John
Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
    
    1
Hi!
John Pradeep.v wrote:
I actually feel little reluctant to annotate the domain classes with JAXB annotations

I agree with you. An option would be to create special transfer objects that are separated from the domain classes. Then you perform some kind of "translation" in the interaction layer of the web service, perhaps implementing code to populate a transfer object from a corresponding domain class instance in the appropriate transfer object class. This would also allow you to create larger transfer objects that consist of multiple domain class instances etc.
Your question and the associated problems, for instance versioning of the data model(s) used by web services, are very interesting, but not easy to solve.
Best wishes!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JAX-WS - domain model
 
Similar Threads
How to implement certificate/security into web service client
JSP to connect to a web service
Newbie question - conversion of incoming XML document into generated object graph
web service not available
InstantiationException in WS client for abstract complexType with jax-ws 2.0