Solved

writing a java webservice

Posted on 2011-03-17
12
487 Views
Last Modified: 2012-05-11
one of the interview questions was
How will you develop a java webservice ?

 All i know about webservice is there are two components
actual webservice and
webserivce client

the 'Client' invokes the 'webservice' using the WSDL.

But can anyone explain how the 'web service' is implimented in java? In my scenario i have a java webservice and a java client.

I am using eclipse. What interfaces, implimentation classes do i need
to impliment the webservice?

thanks
0
Comment
Question by:royjayd
  • 4
  • 3
  • 3
  • +2
12 Comments
 
LVL 47

Expert Comment

by:for_yan
ID: 35161366
0
 

Author Comment

by:royjayd
ID: 35161663
I want to start from scratch, I don't have wsdl or anything. All I have is
eclipse ide. What implimentation classes and interfaces do I need to create to impliment
a web service for example a webservice which has a method
called getName() which returns a string 'jay'.
0
 
LVL 47

Accepted Solution

by:
for_yan earned 300 total points
ID: 35162302

OK, this is extremely minimalistic Web service - in fact you don't need even eclipse.

All you need is Tomcat running as Web service container and you need to install Axis in that Tomcat

http://axis.apache.org/axis/

Axis is implementation of Soap - installation of both Tomcat and Axis (which runs as web application under Tomcat)
is really straightforward.

After you install Axis under Tomcat the home of your Axis installation would be Tomcat_Home/webapps/axis

These are examples of the client and server parts.
This client takes two strings as command line arguments and then
goes to the server where these two strings are concatenated
and the sum is  placed into the Vector with two identicall elements - each one the
of concatenation of your original strings.
This Vector is then  returned back to the client.

This is the client
(all additional classes which you may need will be found in the axis distribution)

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import java.util.Vector;

import javax.xml.rpc.ParameterMode;

public class VectorStringCalcClient {
   public static void main(String [] args) throws Exception {
   
       String endpoint = "http://host_for_tomcat.com:8100/axis/VectorStringCalculator.jws";


// Make the call
String method = "addString";
       String i1 = new String(args[0]);
       String i2 = new String(args[1]);

       Service  service = new Service();
       Call     call    = (Call) service.createCall();

       call.setTargetEndpointAddress(new java.net.URL(endpoint));
       call.setOperationName( method );
       call.addParameter("op1", XMLType.SOAP_STRING, ParameterMode.IN);
       call.addParameter("op2", XMLType.SOAP_STRING, ParameterMode.IN);
       call.setReturnType(XMLType.SOAP_VECTOR);

       Vector ret = (Vector) call.invoke( new Object [] { i1, i2 });

       for(int j=0; j<ret.size(); j++)System.out.println((String) ret.elementAt(j));

          }
}

Open in new window



Below is the code of the server part.

This code you place in the file called VectorStringCalculator.jws (mind, it should be not .java, but .jws)
and you place this file into TOMCAT_HOME/webapps/axis folder.



import java.util.*;

public class VectorStringCalculator {
  public Vector addString (String i1, String i2)
  {
  Vector v = new Vector();
  v.addElement("first: " + i1 + i2);
  v.addElement("second: " + i1 + i2);
    return v; 
  }

}

Open in new window



Then you compile the client and, I believe, you also need to restart Tomcat
and then you just run your client (of course so that you could access your server over the network:)

java VectorStringCalcClient 123 456

(of course you can run it from eclipse - just provide command line argumnents)

This is the output you'll see back on your client
first: 123456
second: 123456

Open in new window


I am sure with this example you'll be able to make a service which returns your name - it would be
even easier. I actually wrote this example, as I was interested how to return Vector - with
String it would be even easier.












 






0
 
LVL 20

Expert Comment

by:Sathish David Kumar N
ID: 35162877
@royjayd,:

There are two way to develop java web services

one is top down (wsdl alredy exits you want to create web services code for that (web services client)

2nd one is buttom up of proccess
0
 
LVL 20

Assisted Solution

by:Sathish David Kumar N
Sathish David  Kumar N earned 100 total points
ID: 35162907
I have a bad experinces in web services with eclipse IDE .

AXis having lot of problem .(axis 1 and axis 2 ) in creating web services .

Better use Jdeveloper they have (in that  jax-rpc ) web services method you can use

or brtter go with MyEclipse (that have 2 methods jax-rpc and rest )
0
 
LVL 4

Assisted Solution

by:msk_apk
msk_apk earned 50 total points
ID: 35163360
you could do it through simple annotations like @WebService (for service) @WebServiceRef for client. for more details refer  http://download.oracle.com/javaee/6/tutorial/doc/ and more examples and source code can be downloaded for that tutorial.
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 1

Assisted Solution

by:yavathol
yavathol earned 50 total points
ID: 35163785
Easiest thing to do is to install WTP (web tools platform) if they are not included in your eclipse distribution (if you've downloaded JEE edition there is already everything there.
Go to servers, and create a sample server adapter (you'll have to download tomcat or some other server binaries beforehands).
Other way is to download some modern middleware with eclipse tools included like Oracle Weblogic with Oracle Workshop.
Later all you need to do is to click your way through the wizard - New -> WebService. It will generate both sides (server part and client part)
0
 

Author Comment

by:royjayd
ID: 35165059
Ok thx for the responses. For_yan, vectorstringcalculator.jws file, how is jws file different from java file? I am assuming it's a java file? Is this technology specific? Do all webservice technologies like
axis or cxf use .jws file?
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35167021
It is not different from .java file - the contents is exactly like java - you just chnage the extension - and that
gives axis the idea what to do with it.
Perhaps, it is not the only way - I found it very convenient.
0
 

Author Comment

by:royjayd
ID: 35167824
ok thanks for sharing that. It helps. Have you worked with apache CXF? I am guessing is it just like axis but very popular , not sure why
0
 
LVL 47

Expert Comment

by:for_yan
ID: 35167840
No I didn't have a chance to work with CXF.
0
 
LVL 20

Assisted Solution

by:Sathish David Kumar N
Sathish David  Kumar N earned 100 total points
ID: 35221077
CXF implement JAX-WS API .if you using tomcat means then its will some problem while deploying ...
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This video teaches viewers about errors in exception handling.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now