Skip to main content

Publishing a Soap-Based Service with the Endpoint class - Part 1

Hey there,

For some developers, especially those that are not familiar with Web Services, it might be difficult to figure out how to start off creating Web Services.


Today we are going to walk you through a simple tutorial, learning how to publish a Web Service, in your local machine, without a Web Server or an Application Server.

A Web Service is a set of functions that are exposed and published over a networking, allowing the separation of the function-service from its execution environment. This leads enterprise softwares to an easier integration approach of different software components, written in different languages and running in different operating system as well as decoupling those components.

Creating our Web Service

We are going to use the bottom-up model for designing a service, which means, we will not have a WSDL file first, but instead we are creating the classes, this model is also known as contract last, because de WSDL is created from the classes.
A developer using a bottom-up model writes implementing classes first (in some programming language), and then uses a WSDL generating tool to expose methods from these classes as a Web service. This is simpler to develop but may be harder to maintain if the original classes are subject to frequent change.
The web service will have only one operation, returning the sum of tho numbers. The class will be named AddService





-
Notice the annotations used in this class the @WebService indicates this class is a Web Service, also the method getResult has the annotation @WebMethod indicating it is service operation. An important observation is that every public method of the class AddService will be a service operation, even if we do not include the @WebMethod.

Let`s now publish this Web Service by adding one more class, if you want you can only add a new public static main method to the AddsService class, as in the bellow code of the ServicePublisher class:



If you are using Eclipse, just right click in the ServicePublish class, chose run as, and then Java Application, the Service will start running in the URL that you defined.

Once the service is running you can use a utility tool such as curl or you browser to get the .XSD, which is the Schema of th:

% curl http://localhost:8888/rs?xsd=1

In this example, the Endpoint runs indefinitely.

In the Second Part of this article, we are going to desigh a simple client to consume the Service.

For now, take a look at a bit more Information about the amazing class javax.xml.ws.Endpoint

- An Endpoint represents a Web Service endpoint

- An endpoint is either in a published or an unpublished state. The publish methods can be used to start publishing an endpoint, at which point it starts accepting incoming requests. Conversely, the stop method can be used to stop accepting incoming requests and take the endpoint down. Once stopped, an endpoint cannot be published again.

An Executor may be set on the endpoint in order to gain better control over the threads used to dispatch incoming requests. For instance, thread pooling with certain parameters can be enabled by creating a ThreadPoolExecutor and registering it with the endpoint.

Learn more by reading the Official Javadocs at: http://docs.oracle.com/javaee/7/api/javax/xml/ws/Endpoint.html





Comments

Post a Comment

Popular posts from this blog

The Scala's Equivalent of Java ArrayList

ArrayList   is a widely misused "default"  List  in Java. It has terrible performance when elements are added/removed frequently, but works pretty well as a replacement for  Array .  But what about Scala? What is Scala's default collection? What Scala collection has characteristics similar to  ArrayList ? What's a good replacement for  Array   in Scala? So here are the answers for these: What is Scala's default collection? Scala's equivalent of Java's  List  interface is the  Seq . A more general interface exists as well, which is the  GenSeq  -- the main difference being that a  GenSeq  may have operations processed serially or in parallel, depending on the implementation. Because Scala allows programmers to use  Seq  as a factory, they don't often bother with defining a particular implementation unless they care about it. When they do, they'll usually pick either Scala's List  or  Vector . They are both immutable, and  Vector

Always Use StringBuilder while concatenating Strings within loops

A common tendency of Java programmers is to always concatenate Strings using + operator. Which is actually very good, and simplifies the code by improves readability, since we would have to use StringBuilder.append(String), if the single + operator was not allowed. In fact if we look in byte code generate from such concatenation style, we will see a StringBuilder being used to perform the action. Check the JSL:    JLS Now , the point is, although this facility, you should not use the + operator in loop concatenation. Why? A new  StringBuilder  Object will be constructed at every single loop iteration (with initial value of str) and at the end of every iteration there will be concatenation with initial String (actually  StringBuilder  with initial value of  str ). So you need to create StringBuilder by yourself only when you work with String concatenation in loop. Let us procuce the evidence First, run this code, and see how long it takes to be executed: Now, bellow is th

Java NIO.2 - The Path Class - An overview

The Java NIO.2 is a new API for file manipulation. Added to the Java Platform 7. This API comes with many benefits, and new classes. Those classes bring new functionalities, and solve problems of the traditional I/O API, as well as allow a more robust and simpler code. In this article, we are going to talk about one of the base classes: The Path class, present in the java.nio.File package. This class is basically one of the entry class of the Java NIO API. The models the Path of File or a directory in a File System in a particular Operational System - Microsoft Windows, for example. As we are a bout to see, this class offers many facilities that make it very important and present in other I/O Operations, as well as, it plays an important role with other classes in the NIO API. Let us get started in the journey of the Path class and its use. 1. Intancing a Path The Path, is actually an Interface, that is instanced with a static factory method from the utility class Paths(java.