File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Web Services and the fly likes Expose only specific webservice methods to specific clients Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Web Services
Bookmark "Expose only specific webservice methods to specific clients" Watch "Expose only specific webservice methods to specific clients" New topic

Expose only specific webservice methods to specific clients

Chitra Jagannathan

Joined: Apr 21, 2009
Posts: 8
I have wsdl created which exposes different webservice methods. I need to give wsdl path to different clients with only their required service methods to be exposed.
How do i achieve this?
I have used apache cxf with spring, created separate bean.xml which describes serviceImpl as the endpoint for the webservice.
dileep keely
Ranch Hand

Joined: Jun 28, 2010
Posts: 91
Say you have different services like
a) CreditCardDtls,b)AddressDtls, c)SubmitApplDtls.
And you want to have a& b service to be given to one client and C for other client.

You can create separate XSD's and import the resource accordingly in different wsdl.

<wsdl:types><xsd:import namespace=""schemaLocation="AddressTypes.xsd" />
<xsd:import namespace="" schemaLocation="CreditCardDtlsTypes.xsd" /></wsdl:types>

<wsdl:types><xsd:import namespace=""schemaLocation="SubmitAppliDtlsTypes.xsd" /></wsdl:types>

Hope this will help!!
Ivan Krizsan
Ranch Hand

Joined: Oct 04, 2006
Posts: 2198
If you are using WLSD 2.0, then an interface can extend another interface.
In this case, you can set up a hierarchy which shares operations; the operations in the interface at the bottom of the hierarchy is available to all interfaces higher up in the hierarchy.

If you are use WSDL 1.1, then you cannot extend <portType> declarations. What I would consider is having multiple portType declarations; one for each kind of client.
Then you can assign endpoints depending on the type of client; client A would only be able to access and endpoint on which the operations in PortTypeA are available while, for instance, client B would be able to access two endpoints, one on which the operations in PortTypeA are available and another on which the operations in PortTypeB are available.
The different kind of clients would still be able to know about other kinds of operations being available to other clients, albeit not be able to invoke them.
If you want to completely hide operations not available to a client, then one WSDL per client is the only way I can think of that will accomplish this.
Best wishes!

My free books and tutorials:
I agree. Here's the link:
subject: Expose only specific webservice methods to specific clients
Similar Threads
Web service Authorization
Best practices regarding client code generation to a third party webservice and deployment issues
One Web Service offers Two Clients
Web Services jargon
Ideas - single client specific webservice client in a product which has 100s of clients