Every now and then I am evaluating a tool or framework for which I need a web service. Although there are examples of running serviuces available on the web, I don´t always have access to the web and sometimes you need some more control over the service so you can edit/influence the corresponding WSDL. For these cases I created the following class which is all you need to get a web service running on your local machine (assuming you have JDK1.6 installed).
All the source you need is the following:
package net.pascalalma.ws; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; import javax.xml.ws.Endpoint; /** * @author Pascal Alma */ @WebService public class EchoServer { @SOAPBinding(style = Style.DOCUMENT) public String getEcho(String txt) { return "echo: " + txt; } public static void main(String[] args) { EchoServer myServer = new EchoServer (); Endpoint endpoint = Endpoint.publish( "http://localhost:8181/echo", myServer); } }
When you run this class (and leave it running), you can point your browser to go to ‘http://localhost:8181/echo?wsdl’ and you receive the wsdl for the web service:
<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.pascalalma.net/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.pascalalma.net/" name="EchoServerService"> <types> <xsd:schema> <xsd:import namespace="http://ws.pascalalma.net/" schemaLocation="http://localhost:8181/echo?xsd=1"></xsd:import> </xsd:schema> </types> <message name="getEcho"> <part name="parameters" element="tns:getEcho"></part> </message> <message name="getEchoResponse"> <part name="parameters" element="tns:getEchoResponse"></part> </message> <portType name="EchoServer"> <operation name="getEcho"> <input message="tns:getEcho"></input> <output message="tns:getEchoResponse"></output> </operation> </portType> <binding name="EchoServerPortBinding" type="tns:EchoServer"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding> <operation name="getEcho"> <soap:operation soapAction=""></soap:operation> <input> <soap:body use="literal"></soap:body> </input> <output> <soap:body use="literal"></soap:body> </output> </operation> </binding> <service name="EchoServerService"> <port name="EchoServerPort" binding="tns:EchoServerPortBinding"> <soap:address location="http://localhost:8181/echo"></soap:address> </port> </service> </definitions>
You can now test your tool/ product by using this web service.