Home | Download | PDF | API | FAQ | Search | Feedback | History

> ## A Web Service Example: HelloServiceBean

> 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 Client (page 503).

> ### The Web Service Endpoint Implementation Class

> `HelloServiceBean` is the endpoint implementation class. The endpoint implementation class is 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.WebService` or `javax.jws.WebServiceProvider` annotations.
> - The implementing class may explicitly reference an SEI through the `endpointInterface` element of the `@WebService` annotation, but is not required to do so. If no endpointInterface is not 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 `static` or `final`.
> - 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 JAX-B-compatible parameters and return types. See Default Data Type Bindings (page 512).
> - The implementing class must not be declared `final` and must not be `abstract`.
> - The implementing class must have a default public constructor.
> - The endpoint class must be annotated `@Stateless`.
> - The implementing class must not define the `finalize` method.
> - The implementing class may use the `javax.annotation.PostConstruct` or `javax.annotation.PreDestroy` annotations on its methods for lifecycle event callbacks.

> The `@PostConstruct` method is called by the container before the implementing class begins responding to web service clients.

> The `@PreDestroy` method 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 follows:

>     package com.sun.tutorial.javaee.ejb;

>     import javax.ejb.Stateless;
>     import javax.jws.WebMethod;
>     import javax.jws.WebService;

>     @Stateless
>     @WebService
>     public class HelloServiceBean {
>       private String message = "Hello, ";

>       public void HelloServiceBean() {}

>       @WebMethod
>       public String sayHello(String name) {
>         return message + name + ".";
>       }
>     }

> ### Building and Packaging helloservice

> In a terminal window, go to the`` `<INSTALL>``/javaeetutorial5/examples/ejb/helloservice/` directory. To build `helloservice`, type the following command:

>     ant

> This runs the `default` task, which compiles the source files and packages the application into an JAR file located at `<``INSTALL``>/examples/ejb/helloservice/dist/helloservice.jar`.

> ### Deploying helloservice

> Now that the Java EE application contains the enterprise bean deploy the `helloservice` application using `ant`:

>     ant deploy

> Upon deployment, the Application Server generates additional artifacts required for web service invocation, including the WSDL file.

> #### Testing the Service Without a Client

> The Application Server Admin Console allows you to test the methods of a web service endpoint. To test the `sayHello` method of `HelloServiceBean`, do the following:

> 1. Open the Admin Console by opening the following URL in a web browser:

> `http://localhost:4848/`

> 2. Enter the admin username and password to log in to the Admin Console.
> 3. Click Web Services in the left pane of the Admin Console.
> 4. Click `helloservice`.
> 5. Click Test.
> 6. Under Methods, enter a name as the parameter to the `sayHello` method.
> 7. Click the `sayHello` button.

> This will take you to the `sayHello` Method invocation page.

> 8. Under Method returned, you'll see the response from the endpoint.