我在JEE6中看到了很多关于RESTful WebServices的问题,所以我想与您分享这个示例解决方案,这表明您可以轻松实现RESTful Web服务。
首先创建一个新的Dynamic Web Project并将Glassfish 4添加为新的运行时,然后按照此文本进行操作。
答案 0 :(得分:3)
在我们的示例应用程序中,我们有一个名为Item的实体类,它包含名称,价格和金额。在这个例子中,我们没有数据库,所以我们没有@Entity Annotation。
班级项目:
package de.professional_webworkx.model.entities;
public class Item {
private String name;
private double price;
private int count;
public Item() {
super();
}
public Item(String name, double price, int count) {
super();
this.name = name;
this.price = price;
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
现在我们需要实现一个SessionBean,它为我们完成所有的业务逻辑工作,所以这里是ItemsBean:
package de.professional_webworkx.business;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import de.professional_webworkx.model.entities.Item;
/**
* this is our stateless session bean which does all the database work,
* e.g. send queries to the database and give results back to the calling
* class(es)...
* @author ottp
*
*/
// in this SessionBean you can implement your business logic and
// fill a list or a object and give it to the webservice class by
// getter methods...
@Stateless
public class ItemsBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5684254200888793061L;
private List<Item> items = new ArrayList<Item>();
public ItemsBean() {
}
@PostConstruct
public void init() {
for(int i = 0; i < 1000; ++i) {
items.add(new Item("Item_"+i, Math.random()*i, (int) i*i));
}
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
}
为了给glassfish建议启动Jersey提供RESTful WebService功能,我们需要创建一个“配置类”,这里是:
package de.professional_webworkx.ws.config;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
// under this ApplicationPath Glassfish will
// load the WebService
@ApplicationPath("/REST")
public class WSConfiguration extends Application {
}
最后但并非最不重要的是ItemService本人,他有一些我们可以从外部调用以获得不同资源演示的方法。
package de.professional_webworkx.ws.resources;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import de.professional_webworkx.business.ItemsBean;
import de.professional_webworkx.model.entities.Item;
// this is the path for the items service class,
// here we will get some information about
// the entity Item
@Path("/items")
public class ItemsService {
@EJB
private ItemsBean bean;
@Path("/info")
@GET
public String info() {
return "Welcome to the ItemsService";
}
@Path("/all")
@GET
@Produces("application/json")
public List<Item> getAllItems() {
return bean.getItems();
}
}
这是设置RESTful Web服务的一种非常好的方式,我认为,前者,当我使用Glassfish 3时,到目前为止我还使用glassfish 3,这是一个更多的工作要做,所以我想用glassfish 4和Java 7现在变得更加容易。
我希望这有助于某人,我在大学练习中以此为例。
您可以在GitHub上找到示例代码:https://github.com/PatrickOtt/RESTful_WS_Example