0% found this document useful (0 votes)
356 views10 pages

Web Services Lab Manual

The document provides steps to create a simple web service in Java that returns the string "Hello" and exposes it using Apache Tomcat. Key steps include: 1. Creating a WebService interface and implementation class. 2. Configuring web.xml and sun-jaxws.xml files to map the endpoint. 3. Packaging classes and deployment descriptors in a WAR and deploying to Tomcat.

Uploaded by

Ashok Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
356 views10 pages

Web Services Lab Manual

The document provides steps to create a simple web service in Java that returns the string "Hello" and exposes it using Apache Tomcat. Key steps include: 1. Creating a WebService interface and implementation class. 2. Configuring web.xml and sun-jaxws.xml files to map the endpoint. 3. Packaging classes and deployment descriptors in a WAR and deploying to Tomcat.

Uploaded by

Ashok Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 10

1)Hello World

Steps:
1.Copy the jax jars to the jdk and tomcat lib

2)create the folder structure in the drive where jdk is configured.

WebServiceInterface.java
package com.enterprise.ws;
import
import
import
import

javax.jws.WebMethod;
javax.jws.WebService;
javax.jws.soap.SOAPBinding;
javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface WebServiceInterface {
@WebMethod
String printMessage();
}
WebServiceImpl.java
package com.enterprise.ws;
import javax.jws.WebService;
@WebService(endpointInterface = "com.enterprise.ws.WebServiceInterface")
public class WebServiceImpl implements WebServiceInterface{
@Override
public String printMessage() {
return "Hello";
}
}
4)
Compile code

5)In Tomcat create the following structure

5)Place the compiled classes in ws folder


6)Below web.xml and sun-jaxws.xml in WEB_INF
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>sayhello</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sayhello</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>

Sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint name="WebServiceImpl"
implementation="com.enterprise.ws.WebServiceImpl"
url-pattern="/sayhello" />
</endpoints>

7)in META_INF place the following file


MANIFEST.MF
Manifest-Version: 1.0
Class-Path:
8)create a war

9) start tomcat

http://localhost:8080/JAX-WS-Tomcat/sayhello

List of Programs:
1. Write a program to implement WSDL Service (Hello Service . WSDL File)
2. Write a program the service provider can be implement a single get price(), static bind() and get
product operation.
3. Write a program to implement the operation can receive request and will return a response in
two ways.
a) One-Way operation
b) Request - Response
4. Write a program to implement to create a simple web service that converts the temperature from
Fahrenheit to Celsius (using HTTP Post Protocol)
5. Write a program to implement business UDDI Registry entry
6. Write a program to implement
a) Web based service consumer
b) Windows application based web service consumer
1. Write

a program to implement WSDL Service (Hello Service . WSDL File)


Following is the WSDL file that is provided to demonstrate a simple WSDL program.
Assuming the service provides a single publicly available function, called sayHello. This
function expects a single string parameter and returns a single string greeting. For example if you
pass the parameter world then service function sayHello returns the greeting, "Hello, world!".

Content of HelloService.wsdl file

<definitions name="HelloService"
targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>
<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:Hello_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:helloservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name="Hello_Port">
<soap:address
location="http://www.examples.com/SayHello/">
</port>
</service>
</definitions>

Analysis of the Example


Definition : HelloService
Type : Using built-in data types and they are defined in XMLSchema.
Message :
1. sayHelloRequest : firstName parameter
2. sayHelloresponse: greeting return value
Port Type: sayHello operation that consists of a request and response service.
Binding: Direction to use the SOAP HTTP transport protocol.
Service: Service available at http://www.examples.com/SayHello/.
Port: Associates the binding with the URI http://www.examples.com/SayHello/ where
the running service can be accessed.
2. Write a program the service provider can be implement a single get price(), static
bind() and get product operation.

getprice()
package com.ecerami.soap.examples;
import java.util.Hashtable;
/**
* A Sample SOAP Service
* Provides Current Price for requested Stockkeeping Unit (SKU)
*/
public class PriceService {
protected Hashtable products;
/**
* Zero Argument Constructor
* Load product database with two sample products
*/
public PriceService ( ) {
products = new Hashtable( );
// Red Hat Linux
products.put("A358185", new Double (54.99));
// McAfee PGP Personal Privacy
products.put("A358565", new Double (19.99));
}
/**
* Provides Current Price for requested SKU
* In a real-setup, this method would connect to
* a price database. If SKU is not found, method
* will throw a PriceException.
*/
public double getPrice (String sku)
throws ProductNotFoundException {
Double price = (Double) products.get(sku);
if (price == null) {
throw new ProductNotFoundException ("SKU: "+sku+" not found");
}
return price.doubleValue( );
}
}

To generate a WSDL file for this class, run the following command:

java2wsdl com.ecerami.soap.examples.PriceService -s -e http://localhost:


8080/soap/servlet/rpcrouter -n urn:examples:priceservice
The -s option directs GLUE to create a SOAP binding; the -e option specifies the address of
our service; and the -n option specifies the namespace URN for the service. GLUE will generate

a PriceService.wsdl file.
Getproduct()

<?xml version="1.0" encoding="UTF-8"?>


<definitions name="ProductService"
targetNamespace="http://www.ecerami.com/wsdl/ProductService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/ProductService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsd1="http://www.ecerami.com/schema">
<types>
<xsd:schema
targetNamespace="http://www.ecerami.com/schema"
xmlns="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="product">

<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="price" type="xsd:double"/>
<xsd:element name="SKU" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="getProductRequest">
<part name="sku" type="xsd:string"/>
</message>
<message name="getProductResponse">
<part name="product" type="xsd1:product"/>
</message>
<portType name="Product_PortType">
<operation name="getProduct">
<input message="tns:getProductRequest"/>
<output message="tns:getProductResponse"/>
</operation>
</portType>
<binding name="Product_Binding" type="tns:Product_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getProduct">
<soap:operation soapAction="urn:examples:productservice"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:productservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:productservice" use="encoded"/>
</output>
</operation>
</binding>
<service name="Product_Service">
<port name="Product_Port" binding="tns:Product_Binding">
<soap:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>

4. Write a program to implement to create a simple web service that converts the
temperature from Fahrenheit to Celsius (using HTTP Post Protocol)
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService

{
public Service () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
[WebMethod]
public string FahrenheitToCelsius(string Fahrenheit)
{
object fahr = null;
fahr = Fahrenheit.Replace(",", ".").Trim(' ');
if (fahr == "")
{
return "Error";
}
int returnVal = ((((Convert.ToInt32(fahr)) - 32) / 9) * 5);
return returnVal.ToString();
}
[WebMethod]
public string CelsiusToFahrenheit(string Celsius)
{
object cel = null;
cel = Celsius.Replace(",", ".").Trim(' ');
if (cel == "")
{
return "Error";
}
int returnVal = ((((Convert.ToInt32(cel)) * 9) / 5) + 32);
return returnVal.ToString();
}
}
5. Write a program to implement business UDDI Registry entry

You might also like