JAX-WS示例不以单例方式运行

时间:2014-04-08 05:31:13

标签: java web-services

作为一名学习者,我研究过JAX-WS以单例方式工作。我尝试使用代码示例,但在我的情况下它不起作用。

以下是我的代码示例:

    package com.example.service;

    import java.util.List;

    public interface ProductService {

     public List<String> getProductCategories();

         public List<String> getProducts(String category);

     public boolean addProduct(String category, String product);

    }

实施班:

    package com.example.serviceImpl;

    import java.util.ArrayList;
    import java.util.List;

    import com.example.service.ProductService;

    public class ProductServiceImpl implements ProductService {

List<String> bookList = new ArrayList<String>();
List<String> musicList = new ArrayList<String>();
List<String> movieList = new ArrayList<String>();

public ProductServiceImpl(){
    bookList.add("ABC");
    bookList.add("XYZ");
    bookList.add("LMNO");

    musicList.add("Random Access Memories");
    musicList.add("Night Visions");
    musicList.add("Unorthodox JukeBox");

    movieList.add("The Great and Powerful");
    movieList.add("Despicable Me");
    movieList.add("Star Trek into Darkness");

}
public List<String> getProductCategories() {
    List<String> categories = new ArrayList<String>();
    categories.add("Books");
    categories.add("Movies");
    categories.add("Music");
    return categories;
}

public List<String> getProducts(String category) {
    switch(category.toLowerCase()){
    case "books":
        return bookList;
    case "music":
        return musicList;
    case "movies":
        return movieList;
    default:
        return null;
    }
}

public boolean addProduct(String category, String product) {
    switch(category.toLowerCase()){
    case "books":
        bookList.add(product);
        break;
    case "music":
        musicList.add(product);
        break;
    case "movies":
        movieList.add(product);
        break;
    default:
        return false;
    }
    return true;
}

    }

Webservice实施:

    package com.example.beans;

    import java.util.List;
    import javax.jws.WebService;
    import com.example.service.ProductService;
    import com.example.serviceImpl.ProductServiceImpl;

    @WebService
    public class ProductCatalog {


ProductService productService = new ProductServiceImpl();

public List<String> getProductCategories(){
    return productService.getProductCategories();
}

public List<String> getProducts(String category){
    return productService.getProducts(category);
}

public boolean addProduct(String category, String product){
    return productService.addProduct(category, product);
}

    }

现在,当我在addProduct请求之后调用getProducts时,它只返回旧的列表,而不是更新的列表。

请告诉我我在哪里做错了或错过了一些配置@ glassfish服务器级别。

提前致谢

1 个答案:

答案 0 :(得分:0)

您是否可以向材料提供任何引用(例如URL),说明JAX-WS服务始终是单身? AFAIK,它只是一个会话bean,所以你至少要用@Singleton来注释它。 除此之外,一般来说,我会将您的Web服务分成两部分:将目录服务与JAX-WS Web服务分开,并使用@Singleton注释目录服务。这样,如果需要,您的目录服务也可能通过Web UI公开。