Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 4108

WebServices Calculator Example using Java

$
0
0

I have created an sample application of calculator for sum of two numbers using webservices in Java by using Jersey service.

My code is : Calculator.java

package p1;import javax.jws.WebService;import javax.jws.WebMethod;import javax.ws.rs.Path;@WebService@Path("/CalculatorService")public class Calculator{    @WebMethod    public String sum(int x,int y)    {        return ""+(x+y);    }}

Calculator.java:

package mypack;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.xml.ws.RequestWrapper;import javax.xml.ws.ResponseWrapper;/** * This class was generated by the JAXWS SI. * JAX-WS RI 2.0_02-b08-fcs * Generated source version: 2.0 *  */@WebService(name = "Calculator", targetNamespace = "http://p1/")public interface Calculator {    /**     *      * @param arg1     * @param arg0     * @return     *     returns java.lang.String     */    @WebMethod    @WebResult(targetNamespace = "")    @RequestWrapper(localName = "sum", targetNamespace = "http://p1/", className = "mypack.Sum")    @ResponseWrapper(localName = "sumResponse", targetNamespace = "http://p1/", className = "mypack.SumResponse")    public String sum(        @WebParam(name = "arg0", targetNamespace = "")        int arg0,        @WebParam(name = "arg1", targetNamespace = "")        int arg1);}

CalculatorService.java:

package mypack;import java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;import javax.xml.ws.WebEndpoint;import javax.xml.ws.WebServiceClient;/** * This class was generated by the JAXWS SI. * JAX-WS RI 2.0_02-b08-fcs * Generated source version: 2.0 *  */@WebServiceClient(name = "CalculatorService", targetNamespace = "http://p1/", wsdlLocation = "http://localhost:8081/MyCalculatorWs/CalculatorService?WSDL")public class CalculatorService    extends Service{    private final static URL CALCULATORSERVICE_WSDL_LOCATION;    static {        URL url = null;        try {            url = new URL("http://localhost:8081/MyCalculatorWs/CalculatorService?WSDL");        } catch (MalformedURLException e) {            e.printStackTrace();        }        CALCULATORSERVICE_WSDL_LOCATION = url;    }    public CalculatorService(URL wsdlLocation, QName serviceName) {        super(wsdlLocation, serviceName);    }    public CalculatorService() {        super(CALCULATORSERVICE_WSDL_LOCATION, new QName("http://p1/", "CalculatorService"));    }    /**     *      * @return     *     returns Calculator     */    @WebEndpoint(name = "CalculatorPort")    public Calculator getCalculatorPort() {        return (Calculator)super.getPort(new QName("http://p1/", "CalculatorPort"), Calculator.class);    }}

ObjectFactory.java:

package mypack;import javax.xml.bind.JAXBElement;import javax.xml.bind.annotation.XmlElementDecl;import javax.xml.bind.annotation.XmlRegistry;import javax.xml.namespace.QName;/** * This object contains factory methods for each  * Java content interface and Java element interface  * generated in the mypack package.  * <p>An ObjectFactory allows you to programatically  * construct new instances of the Java representation  * for XML content. The Java representation of XML  * content can consist of schema derived interfaces  * and classes representing the binding of schema  * type definitions, element declarations and model  * groups.  Factory methods for each of these are  * provided in this class. *  */@XmlRegistrypublic class ObjectFactory {    private final static QName _Sum_QNAME = new QName("http://p1/", "sum");    private final static QName _SumResponse_QNAME = new QName("http://p1/", "sumResponse");    /**     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: mypack     *      */    public ObjectFactory() {    }    /**     * Create an instance of {@link Sum }     *      */    public Sum createSum() {        return new Sum();    }    /**     * Create an instance of {@link SumResponse }     *      */    public SumResponse createSumResponse() {        return new SumResponse();    }    /**     * Create an instance of {@link JAXBElement }{@code <}{@link Sum }{@code >}}     *      */    @XmlElementDecl(namespace = "http://p1/", name = "sum")    public JAXBElement<Sum> createSum(Sum value) {        return new JAXBElement<Sum>(_Sum_QNAME, Sum.class, null, value);    }    /**     * Create an instance of {@link JAXBElement }{@code <}{@link SumResponse }{@code >}}     *      */    @XmlElementDecl(namespace = "http://p1/", name = "sumResponse")    public JAXBElement<SumResponse> createSumResponse(SumResponse value) {        return new JAXBElement<SumResponse>(_SumResponse_QNAME, SumResponse.class, null, value);    }}

package-info.java:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://p1/")package mypack;

Sum.java:

package mypack;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlType;/** * <p>Java class for sum complex type. *  * <p>The following schema fragment specifies the expected content contained within this class. *  * <pre> * &lt;complexType name="sum"> *   &lt;complexContent> *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> *       &lt;sequence> *         &lt;element name="arg0" type="{http://www.w3.org/2001/XMLSchema}int"/> *         &lt;element name="arg1" type="{http://www.w3.org/2001/XMLSchema}int"/> *       &lt;/sequence> *     &lt;/restriction> *   &lt;/complexContent> * &lt;/complexType> * </pre> *  *  */@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "sum", propOrder = {"arg0","arg1"})public class Sum {    protected int arg0;    protected int arg1;    /**     * Gets the value of the arg0 property.     *      */    public int getArg0() {        return arg0;    }    /**     * Sets the value of the arg0 property.     *      */    public void setArg0(int value) {        this.arg0 = value;    }    /**     * Gets the value of the arg1 property.     *      */    public int getArg1() {        return arg1;    }    /**     * Sets the value of the arg1 property.     *      */    public void setArg1(int value) {        this.arg1 = value;    }}

SumResponse.java:

package mypack;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlType;/** * <p>Java class for sumResponse complex type. *  * <p>The following schema fragment specifies the expected content contained within this class. *  * <pre> * &lt;complexType name="sumResponse"> *   &lt;complexContent> *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> *       &lt;sequence> *         &lt;element name="return" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> *       &lt;/sequence> *     &lt;/restriction> *   &lt;/complexContent> * &lt;/complexType> * </pre> *  *  */@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name = "sumResponse", propOrder = {"_return"})public class SumResponse {    @XmlElement(name = "return")    protected String _return;    /**     * Gets the value of the return property.     *      * @return     *     possible object is     *     {@link String }     *          */    public String getReturn() {        return _return;    }    /**     * Sets the value of the return property.     *      * @param value     *     allowed object is     *     {@link String }     *          */    public void setReturn(String value) {        this._return = value;    }}

And my web.xml file is:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>CalculatorEx</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><servlet-name>Jersey REST Service</servlet-name><servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class><init-param><param-name>com.sun.jersey.config.property.packages</param-name><param-value>com.restful.demo.resources</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Jersey REST Service</servlet-name><url-pattern>/rest/*</url-pattern></servlet-mapping></web-app>

I am executing my application using:http://localhost:8080/CalculatorEx/rest/CalculatorService

i am getting the error like this:

exception:javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)    java.lang.Thread.run(Thread.java:679)root cause:com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.    com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)    com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)    com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)    com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)    com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)    com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:766)    com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:488)    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)    javax.servlet.GenericServlet.init(GenericServlet.java:160)    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)    java.lang.Thread.run(Thread.java:679)

Viewing all articles
Browse latest Browse all 4108


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>