作为一名学习者,我研究过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服务器级别。
提前致谢
答案 0 :(得分:0)
您是否可以向材料提供任何引用(例如URL),说明JAX-WS服务始终是单身? AFAIK,它只是一个会话bean,所以你至少要用@Singleton来注释它。 除此之外,一般来说,我会将您的Web服务分成两部分:将目录服务与JAX-WS Web服务分开,并使用@Singleton注释目录服务。这样,如果需要,您的目录服务也可能通过Web UI公开。