ws

JAX-WS CRUD operations

  • UserService.java
  • DbContainer.java
  • User.java
  • pom.xml

http://localhost:9080/jax_ws_crud_operations/UserServiceService?wsdl

UserService.java

package com.training.ws;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@Stateless
@WebService
public class UserService {

    @EJB
    private DbContainer db;

    @WebMethod
    public User find(@WebParam(name = "id") String id) {
        return db.find(id);
    }

    @WebMethod
    public List<User> findAll() {
        return db.findAll();
    }

    @WebMethod
    public String count() {
        return String.valueOf(db.count());
    }

    @WebMethod
    public String createUser(String name) {
        int id = db.createUser(name);
        return String.valueOf(id);
    }

    @WebMethod
    public void updateUser(@WebParam(name = "id") String id,
            @WebParam(name = "name") String name) {
        db.updateUser(id, name);
    }

    @WebMethod
    public void deleteUser(@WebParam(name = "id") String id) {
        db.deleteUser(id);
    }

}

DbContainer.java

package com.training.ws;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import javax.ejb.Singleton;

import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;

@Singleton
public class DbContainer {

    private static int lastId = 0;
    private List<User> users = new ArrayList<User>();

    public List<User> findAll() {
        return users;
    }

    public int count() {
        return users.size();
    }

    public int createUser(String name) {
        int id = generateId();
        User user = new User(id, name);
        users.add(user);
        return id;
    }

    private int generateId() {
        return ++lastId;
    }

    public User find(final String id) {

        Collection<User> list = Collections2.filter(users,
                new Predicate<User>() {

                    public boolean apply(User user) {
                        return id.equals(String.valueOf(user.getId()));
                    }
                });

        return list.iterator().next();
    }

    public void deleteUser(String id) {
        for (Iterator<User> iterator = users.iterator(); iterator.hasNext();) {
            User user = (User) iterator.next();
            if (id.equals(String.valueOf(user.getId()))) {
                iterator.remove();
                break;
            }
        }
    }

    public void updateUser(String id, String name) {
        for (Iterator<User> iterator = users.iterator(); iterator.hasNext();) {
            User user = (User) iterator.next();
            if (id.equals(String.valueOf(user.getId()))) {
                user.setName(name);
                break;
            }
        }
    }
}

User.java

package com.training.ws;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class User {

    private int id;
    private String name;

    public User() {
    }

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.training</groupId>
    <artifactId>jax_ws_crud_operations</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>18.0</version>
        </dependency>
    </dependencies>

</project>