Saturday, March 29, 2008

Netbeans Platform based Web Service client

I'm writing my diploma thesis and I have choosed Netbeans Platform as base for my program. It will be client-server application. Client will invoke web service methods provided by server. My troubles started here. I strugled a lot with these kind of messages:

interface com.sun.xml.ws.developer.WSBindingProvider is not visible from class loader

Unable to create Provider: com.sun.xml.ws.spi.ProviderImpl cannot be cast to javax.xml.ws.spi.Provider

There is no exact tutorial (for Netbeans 6.x and JAX-WS 2.1) describing how to invoke web service from Netbeans Platform application.

So here are steps:
  1. Create web service and client using this tutorial
  2. Create library wrapper module for web service client (you don't need to include JAX-WS libs, only your client jar)
  3. In your wrapper module add following dependencies (important):
    • JAX-WS 2.1 API
    • JAX-WS 2.1 and JAXB 2.1 Library (for this you have to check Show Non-API Modules in "Add Module Dependency" window)
  4. If you try to build module after these steps it will fail telling you that your module is not friend of "path-to-netbeans"/java2/modules/org-netbeans-modules-websvc-jaxws21.jar
  5. Right click on JAX-WS 2.1 and JAXB 2.1 Library and choose Edit. Select Implementation Version.
That's all. Happy web service-ing :) By the way it would be nice if we could add web service client in module project like we do that in j2se project. There would not be need for client wrapper.

5 comments:

Unknown said...
This comment has been removed by the author.
Unknown said...

Thanks Damir..
You really save my day. But im wondering, how you solved this problem at that time :)

damir said...

You are welcome. Well, I googled for exceptions and tried to figure out meanings of those exceptions in Netbeans :)

All the best,
Damir

Yannick Majoros said...

Why in the world is this needed? Can't we just have a "Web Service Client" new file wizard, just as in a Java SE or even EE application?

I just added some of the libs, and it built ok... but I had "strange" exceptions at runtime...

Yannick Majoros said...

http://www.netbeans.org/issues/show_bug.cgi?id=175268

"jax libraries in netbeans are for 'friends' only. so you either have to use impl dependency and make sure your target
platform has the exact specification version or create your own library wrapper module and bundle the jax libraries with
your plugin"