Web service from WSDL - java

I want to generate service implementation from WSDL (Top down approach) in Java but I dont want to use any tool. For example If we want to create stubs we can use wsimport.
Please let me know if this is a duplicate question.
Thanks

If you don't want to use any tool to generate code or stubs, maybe you would like to use Spring WebServices. This way you only create an EndPoint able to process WS messages, that is, you only worry about implementing server logic.
With this approach you can define beans to marshalling, using jaxb2 (or another), and the EndPoint brings you functionality to receive not XML payload, but Java Objects instead.
If you don't want to genereta code or stubs, I think Spring WS is nice for you.
If you don't want to use any tool at all, then sorry for my answer, but I believed what you didn't want is to generate code.

Below is the Maven plugins which create Java from WSDL:
Axis :
Axis plugin
CXF
CXF plugin

Related

Which feature make one to use Spring WS over JAX-WS

For SOAP Based Web Services, why one should choose Spring WS over JAX-WS.
I had gone through some article even Spring WS doc feature but still I am not clear.
If I need to convince someone to use Spring WS I can't.
So I want the difference in simple terms that any Web Service Developer can understand.
Thanks in advance.
I am not going into the details of JAX-WS versus Spring-WS.
You might want to refer to the link here for details on that and google it.
From my personal experience :
Spring-WS Advantages over JaxWS
You want to use a databinding other than JAXB (JibX, Castor or
others)
You want extreme fine grained control on the endpoint mapping strategy
You are choosing a WSDL first approach (though many argue that JAXWS also supports a WSDL first approach, it is generally accepted to be more flexible in spring-ws)
JaxWS over SpringWS
You want to go for a java first approach
You want to make your code flexible (since JAXWS is a specification you can have multiple implementations)
You want to use other annotation driven development of JAX-WS

WSDL with a dynamic XSD

Is anyone know how to expose a WSDL with a dynamic XSD ? The choice of the XSD should depend of URL parameters given during the WSDL request. The operations of the WSDL
Prefered framework is Spring Web Service but other solutions are welcome.
Regards,
Spring-ws is able to generate the WSDL on the fly, based on your XSD files. I'm not sure if this is what you want since you're changing the webservice definition. In my opinion you should only have one definition.
Perhaps it's an option to provide multiple entry points, based on different XSD's. Since Spring-WS can take care of generating the WSDL that might be an option for you. It would at least provide you with only one WSDL.
Another option is of course to create a REST service where you're free to implement this any way you'd like.

Generating client stubs from WSDL

I am starting on a new project with commercial vendor. I need to write an integration module in our application to consume commercial vendor's web service. So, WSDL is not controlled by us.
I think the general approach is to do a "Contract First" development and generate stubs from the WSDL file. I would like to know what technologies are available to do this? I would really like the simplest approach that works. We use Maven 3.0.3 and Spring 3.0.5 extensively. Can I use Spring WebServiceTemplate?
Please let me know if the question isn't clear or additional details are needed.
Thanks,
Tapasvi
You can generate the java stubs with the maven plugin for JAX-WS. Then you can use the stubs in spring to expose them as a webservice. Luckily, it's quite simple :).
Just a suggestion, don't re-generate the stubs every time you build the project, as (obviously) you won't be able to add any code to the stubs, which is sometimes very useful. I made this mistake long time ago and it was quite painful, because I had to put code in places where it didn't belong. In the last few years I used a maven profile to generate the stubs on demand and then I merged them "manually" to add the extra code. Of course, this is only viable if the WSDL doesn't change very often.
I have used axis and the easiest way to do is to run the utility wsdl2java and pass the location of the webservice along with the ?wdsl option.
I know lots of IDE's these days will allow to generate you stubs from within. MyeclipseIDE has an option to ingest an WSDL so does intelliJ. I think the safer approach is to use wsdl. Also if you are using jax-ws you can try
wsimport -keep -verbose location to wsdl
JAX-WS is included in the standard Java 6 distribution making it very simple to use.
Generate stubs with wsimport in the JDK (remember to enable as many warnings as possible, as you want to know anything that may cause problems).

How to generate WADL file?

I wrote RESTful web service using RESTeasy implementation and turn EJB into JSON. And now I'm on the way of development client side.
I'm using Netbeans. How I can generate WADL file? And after I would generated client stub without any problem.
Please, could you suggest me how I can do this? Or maybe you know different easy way.
Thanks a lot!
Artem
Just FYI if you are trying to create a RESTful system, then generating client proxies using WADL will eliminate a significant number of the benefits REST provides.
However, if you are using the term REST as a way to describe a Http API (HAPI) service then go right ahead and use WADL. I'm not saying this to be pedantic about terminology, I just want you to be aware that, if this the case, you are free to ignore all the "it's not RESTful" because you are not trying to do REST, and that's cool.
If you are trying to make a system where the client and server components can evolve independently over the next 5 to 10 years, then maybe REST is right for you in which case WADL is probably not what you want.

netbeans custom jax-ws stubs

I am using netbeans 6.9. I have made a JAX-WS service that returns a complex type, I have also made a JAX-WS client to consume it.
The JAX-WS system automaticly creates a class for the client, inferred from the WSDl spec. I want to make my own class for this using JAXB annotations, so that I can add some extra functions to it.
How do I go about replacing the autogenerated file with my own one? Could I also use the same class in the service to control how it is transmitted?
Thanks!
Why replace the generated class?
From your description, it sounds like a good case for using the Decorator design pattern.
I have done this on a JAX-RPC project, and it worked very well.

Categories