how to call external webservice in salesforce APEX - web-services

I'm new to SFDC. I need to perform integration between SFDC and EBS. I have a SOAP webservice from EBS to create party,account, account site and site details.
Now i need to call this webservice in SFDC(using APEX). Can you please let me know how i can achieve this (Expecting Step by step explanation) or any document which will tell me how this can be achieved.

Salesforce provides an integrated tool called Wsdl2Apex. It can be used to create Apex classes from the WSDL to call the web service from Apex. See SOAP Services: Defining a Class from a WSDL Document, which includes step by step instructions on how to generate the Apex classes from a WSDL.
Remember that you will also need to setup a Remote Site to allow the callout to the web service URL.
There are a couple of alternatives depending on how complicated your WSDL is.
Firstly, there is also an open source version of Wsdl2Apex.
Secondly, I've created an independent tool that has increased support for various WSDL features. See Dreamforce 2014 Presentation - Improved Apex support for SOAP based web services.

Related

How can I expose a WSDL using Mulesoft so Salesforce can call it

I'm new to the Mulesoft. Currently we have a requirement that need to use Mulesoft to expose a WSDL for Salesforce to call. When Salesforce call this web service, it will transform some account information and Mulesoft will load them to a MySQL table. Could anyone help how can I create this? Thank you!
Definitely... As Nuno said you need to use CXF component in Mule to expose your SOAP webservice.. Actually using Mule platform you can able to expose any kind of Web Service you required like (Soap,Rest) that other applications can able to read ..
Take a look into an easy way of creating the webservice and exposing the WSDL :- http://training.middlewareschool.com/mule/soap-code-first-build/
To publish a SOAP service you should use the CXF component (reference). Take a look into the documentation Publishing a SOAP API to have an ideia in how to begin your flow.
Please take some time to have a quick look into the Mule User guide, since it explains the essentials to start developing with Mule. You will need it to learn how to interact with MySQL too (Database connector).

SOA Suite - How to automatically enable Web Service Rest support after composite deploy

I have a composite with a SOAP web service entry point running on SOA Suite. We will have a new client for that web service, but this client cannot speak SOAP, so we will have to publish that entry point on a REST endpoint. I know I can enable REST Support to the existing web service through EM console, but I would like to have this configuration enabled by default after deploy.
My research for ways to do that using a property or attribute on a configuration plan did not get useful informations.
Does anyone know how could I achieve that?
Thanks!
REST Support is formal part of SOA Suite 12c. Download and install that and then you can easily add a REST interface to a SOAP composite. Also, 12c now installs without RCU/DB, etc - just start the Integrated WLS domain in JDev and it builds itself and you are up and deploying in under 20 mins. And this may help.

Best way to deploy a web site alongside an axis2 web service via Tomcat?

I am using Axis2 (1.5.3 currently) and Tomcat (6.0.26 currently) and am running a web service. I would like to also host HTML pages for configuring the web service.
What is the best way to go about this? I assume keeping the same context is key, but perhaps it is not.
My current distribution is located under a folder structure similar to this:
Tomcat/webapps/mycompany
With the actual service code here:
Tomcat/webapps/mycompany/WEB-INF/services/myService
In a browser, I can hit my web service by going to here:
/mycompany/services/myService
I note that I can drop actual HTML files in this path and Tomcat will, indeed serve them up.
For instance, if I put "index.html" under Tomcat/webapps/mycompany, I can navigate to /mycompany/index.html and see my html.
What I want to do is have this HTML be attached to JAR/class files that can interact with the already-existing service class files in the same context as the service. Therefore, I can have the browser configure the web service directly.
Is this possible, and is there a tutorial or something out there that will help me with this? Note that I have been working with Tomcat and Axis2 for a while now for this particular web service, but I have never actually deployed a web application/html using Tomcat before.
Thanks.
First of all what do you mean by a configuring a service. Normally in SOA world services are analogous to interfaces. IMHO you can just change a service, since their are other users that rely on the services you are exposing.
If i want to change a service i would rather introduce a new version of the service after deprecating the existing one.
Are you talking about applying QoS to existing serviecs. Then that makes sense.
Anyway, If you want to have a web-app alongside with axis2 service engine, it is possible. If you look inside the axis2 war file you'll find the web.xml entry to Axis2Servlet. It is this servlet that serves the web services requests.
So, what you need is the Axis2Servlet mapping in your web-app along with your usual servlet-mappings. Number of possible ways to configure your services using web-app files. One options is to use web-services call itself to (with authentication) to configure it.
By "configure a service", take this example:
The service has a set of datasets.
Each dataset exists in a separate database.
The service can manage 0..n datasets.
The service must be configured to know about each dataset.
This is what I'm configuring. I'm not trying to configure Axis itself or redefine the service.
I would like to host the HTML using the same instance of Tomcat that I'm hosting the web service with. It needs to manage sessions, have login capability, an whatnot, and has to be able to configure the web service live.
From what I'm reading, it's probably best to make an interface to the web service that the web application module can call into from a different context.
Is there a better way?

how to publish and discover a java web service

I am new to developing web services using java. I have an academic project where I need to do dynamic service composition. For that I can't directly create a service-client for a particular service because if I do so then that client will call that particular service only. Client need to search various web services and then out of those services select any one at run time and also call that service at run time.
I was able to develop the web service(JAX-WS) using Eclipse(indigo), I also created the client for that web service and every thing is working fine. Now my problem is that while creating the client I am hard coding the client to call that particular web service only(since I am creating the client using the WSDL file of the service). However I actually need to call any one of the searched service, but for that I need to publish the service some where then discover it and then call it.
I tried publishing the service to juddiv3. But on juddiv3 I could only publish the sample service supplied with the juddiv3. When I try to publish service created by me then it is not getting displayed in the group of published services.
Is there any other UDDI server which I could install on my local machine and then publish and discover the service from that. Also I was not able to figure out how to create a client that will modify itself at run time to call any one service out of various searched services.
Kindly provide the necessary steps and code.
Thanks
You can use jUDDI (http://juddi.apache.org/ ).
juddi is based on UDDI v2.0, v 3.0 .
Here, you can publish as well as discover your web service.
For integration, you have to make some application which integrates with jUDDI.
But I think for your academic project, and for your purpose, jUDDI is best suitable! ( :) )
jUDDI has a boat load of examples in the source code trunk. You may want to check them out. It's difficult to guess what the problem is from the little information you've provided. Consider contacting the jUDDI team for further assistance. http://svn.apache.org/repos/asf/juddi/trunk/juddi-examples/. There's also additional document for working with UDDI in the jUDDI user's guide, which is at the jUDDI web site
You cannot directly publish on jUDDI. You need to create publisher entities in jUDDI server also. You'll find Rename4Sales and Rename4Marketing examples in 'Classes' folder in the standalone server's juddi application. Use these XMLs as your basis and create your own entity. You also need to configure the server's login credentials.
I suggest you follow the tutorials on jUDDI blog.

Approaches for creating REST Web services?

i am new to REST Service development. I compared the development mechanism for both REST and WS web services and i found that you can create a WS web service using WSDL file that is the top down appraoch (Correct me if i am wrong) and using bottom up approach also, that is generating the classes manually.
But when it comes to REST web service development you have to follow bottom up approach only that is generating the classes manually. NetBeans IDE provides certain wizards for creating REST web service quickly from databases, entity classes and patterns.
I had also seen when you are developing web service in eclipse and you are using wizard in eclipse IDE, you can create a REST web service from WSDL file. I found this very strange. My question here is what are the approaches we can have for creating REST web services. Can we create REST web services using top-down and bottom up approached. If yes then please provide me details.
Thanks.
It is possible to describe a REST service using a contract. This is the intent of WADL and WSDL 2.0. WADL is specifically a REST contract, whereas WSDL 2.0 evolved from the original WSDL spec. to support all HTTP bindings. Since REST services rely on the use of HTTP methods and headers to exchange messages a WSDL 2.0 contract can work. There is a really good explanation here: http://ajaxonomy.com/2008/xml/web-services-part-2-wsdl-and-wadl
For development of REST services, I'm not sure if NetBeans, Eclipse or other tools specifically support automated REST service from WSDL generation. I would imagine that most are still intended for SOAP service creation. At this point I think WSDL 2.0 and WADL can be used to describe a REST service, but are not intended for automated generation of a REST service.
REST services are simple HTTP request/response,and therefore don't require complex stubs. In most cases it would probably take more time to write the WSDL describing the REST service, than it would take to write the REST service itself.