A Web Service Example: helloservice
This example demonstrates a simple web service that generates a response
based on information received from the client. HelloServiceBean is a
stateless session bean that implements a single method: sayHello. This
method matches the sayHello method invoked by the client described in
A Simple JAX-WS Application Client.
The following topics are addressed here:
The Web Service Endpoint Implementation Class
HelloServiceBean is the endpoint implementation class, typically the
primary programming artifact for enterprise bean web service endpoints.
The web service endpoint implementation class has the following
requirements.
-
The class must be annotated with either the
javax.jws.WebServiceor thejavax.jws.WebServiceProviderannotation. -
The implementing class may explicitly reference an SEI through the
endpointInterfaceelement of the@WebServiceannotation but is not required to do so. If noendpointInterfaceis specified in@WebService, an SEI is implicitly defined for the implementing class. -
The business methods of the implementing class must be public and must not be declared
staticorfinal. -
Business methods that are exposed to web service clients must be annotated with
javax.jws.WebMethod. -
Business methods that are exposed to web service clients must have JAXB-compatible parameters and return types. See the list of JAXB default data type bindings at Types Supported by JAX-WS.
-
The implementing class must not be declared
finaland must not beabstract. -
The implementing class must have a default public constructor.
-
The endpoint class must be annotated
@Stateless. -
The implementing class must not define the
finalizemethod. -
The implementing class may use the
javax.annotation.PostConstructorjavax.annotation.PreDestroyannotations on its methods for lifecycle event callbacks.The
@PostConstructmethod is called by the container before the implementing class begins responding to web service clients.The
@PreDestroymethod is called by the container before the endpoint is removed from operation.
Stateless Session Bean Implementation Class
The HelloServiceBean class implements the sayHello method, which is
annotated @WebMethod. The source code for the HelloServiceBean class
is as follows:
package javaeetutorial.helloservice.ejb;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
@Stateless
@WebService
public class HelloServiceBean {
private final String message = "Hello, ";
public void HelloServiceBean() {}
@WebMethod
public String sayHello(String name) {
return message + name + ".";
}
}
Running the helloservice Example
You can use either NetBeans IDE or Maven to build, package, and deploy
the helloservice example. You can then use the Administration Console
to test the web service endpoint methods.
The following topics are addressed here:
To Build, Package, and Deploy the helloservice Example Using NetBeans IDE
-
Make sure that GlassFish Server has been started (see Starting and Stopping GlassFish Server).
-
From the File menu, choose Open Project.
-
In the Open Project dialog box, navigate to:
-
Select the
helloservicefolder. -
Click Open Project.
-
In the Projects tab, right-click the
helloserviceproject and select Build.This builds and packages the application into
helloservice.ear, located intut-install/examples/ejb/helloservice/target/, and deploys this EAR file to GlassFish Server.
To Build, Package, and Deploy the helloservice Example Using Maven
-
Make sure that GlassFish Server has been started (see Starting and Stopping GlassFish Server).
-
In a terminal window, go to:
tut-install/examples/ejb/helloservice/ -
Enter the following command:
This compiles the source files and packages the application into an EJB JAR file located at
tut-install/examples/ejb/helloservice/target/helloservice.jar. Then the EJB JAR file is deployed to GlassFish Server.Upon deployment, GlassFish Server generates additional artifacts required for web service invocation, including the WSDL file.
To Test the Service without a Client
The GlassFish Server Administration Console allows you to test the
methods of a web service endpoint. To test the sayHello method of
HelloServiceBean, follow these steps.
-
Open the Administration Console by opening the following URL in a web browser:
-
In the navigation tree, select the Applications node.
-
In the Applications table, click the
helloservicelink. -
In the Modules and Components table, click the View Endpoint link.
-
On the Web Service Endpoint Information page, click the Tester link:
/HelloServiceBeanService/HelloServiceBean?Tester -
On the Web Service Test Links page, click the non-secure link (the one that specifies port 8080).
-
On the HelloServiceBeanService Web Service Tester page, under Methods, enter a name as the parameter to the
sayHellomethod. -
Click sayHello.
The sayHello Method invocation page opens. Under Method returned, you’ll see the response from the endpoint.