You are currently browsing the daily archive for October 14th, 2008.
Huh? Not C#!!! – What’s all this “Rant in C Sharp” business then!? Well, sometimes you have to be flexible in your job – well, lets just say we should be ‘language ambivalent’.
This is a VERY simple attempt to show show how to create a web service in Eclipse using Axis. There is also some client code to show how you would interact with that web service. For some reason I had to delve into a bazillion websites and scour a million books before I could make some sort of sense of it all – so just so you don’t have the same trouble – I have decided to publish it (well actually, it’s so that I don’t forget either).
Little disclaimer – I’m not saying that this is difinitive, I may be missing something, but it seems to work for me just now, and I haven’t gone into all the ‘bells and whistles’ of web services. At the moment I’m writing down everything I learn and hopefully help others by sharing the knowledge.
(Using Java 1.5)
Create Basic Web Service
- Create new Dynamic Web Project.
- Create new Java class (call it “DoesMagic”).
- Add method like this (perhaps):
public class DoesMagic{
public String doBasicStuff(String message)
{
return "This is your message: " + message;
}
}
4. Right click on class you just made, New -> Other -> Web Services -> Web Service, you should get a form like the one below:
This will create all the necessary files to be able to publish your class as a web service. If you want you can also create a client automatically by moving the slider – but what it generates may be hard to understand at first glance, so I have written a simple example of client code (see later on…).
5. In order to run the web service – just, Run as -> Run on Server. Once the web service is running and alive on Tomcat – then we should be able to use it via some client code (see next bit).
Create Basic Web Service Client
Must create a project that has all the axis.jar type stuff in the WebContent folder – this can usually be made by generating a client application via the above wizard – you don’t have to use all the auto generated classes to access your web service, just do the following:
1. Create a new Java Class – call it TestClient.
2. Make it a main class, and enter the following code:
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class TestClient {
public static void main(String [] args)
{
try{
String endpoint = "http://localhost:8080/TestWebService/services/DoesMagic";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName( new QName("http://testPackage.fc.com", "doBasicStuff") );
String ret = (String) call.invoke( new Object[] {"Hello World"} );
System.out.println(ret);
}
catch(Exception e){
System.err.println(e.toString());
}
}
}
3. Go to your web service project you made before and look at the source code for the wsdl file that has been created. It’s in the folder WebContent -> wsdl. Inside there you will find a wsdl that is the same name as your class.
4. You need to look at the wsdl and find the endpoint – which looks similar to:
"http://localhost:8080/TestWebService/services/DoesMagic"
and you need to get the namespace and the method name you want to invoke (as shown above, should be in a very similar format).
5. In this case, when we get to the point that the call.invoke command is being issued it is casting the result to a String and we are sending in a String called “Hello World” – this should create a message in the console like “This is your message: Hello World”.
6. To test the class, just run the project as a Java Application and you should see the result in the Console printed out.
Conclusion
This is not indepth – this may not even be 100% correct, but it just gives you a taste of what can be achieved – it’s up to you now to read up more on Java Web Services. Good luck !
PS – Take a sec just to vote whether this article helped you or not – see widget below. If not, tell me what’t wrong with it and I’ll try and improve it. I love feedback so I look forward to your comments!

