Restful 服务端
1 创建好pojo、dao、service, dao进行数据库操作,service提供服务
@Path("/roomservice") @Produces("application/xml") public class RoomService { @GET @Path("/room/{id}") @Consumes("application/xml") public Room getRoom(@PathParam("id")String id ) { System.out.println("get room by id= "+id); Room room=RoomDAO.getRoom(id); return room; } @POST @Path("/room") @Consumes("application/xml") public void addRoom(Room room) { ... 通常需要使用注解: GET/POST/PUT/DELETE, Path, Consumes, 有参数的方法需要加上 @PathParam
2 通过JAXRSServerFactoryBean来发布服务 —— 一个类即可!
public class Server { public static void main(String[] args) { RoomService service = new RoomService(); // Service instance JAXRSServerFactoryBean restServer = new JAXRSServerFactoryBean(); restServer.setResourceClasses(Room.class,Person.class,Room.class); restServer.setServiceBean(service); restServer.setAddress("http://localhost:9999/"); restServer.create(); } }
restful 客户端
使用一个类即可:org.apache.cxf.jaxrs.client.WebClient ! 非常方便
public class Client { static WebClient client; public static void main(String[] args) { client = WebClient.create("http://localhost:9999/"); put(); } static void get() { Room room = client.path("roomservice/room/001") .accept("application/xml").get(Room.class); System.out.println("get the room which id is:" + room.getId()); } static void post() { Room room = new Room(); room.setId("003"); client.path("roomservice/room").accept("application/xml") .post(room, Room.class); } static void delete() { client.path("roomservice/room/002").accept("application/xml").delete(); } static void put() { Room room = new Room(); room.setId("009"); client.path("roomservice/room/003").accept("application/xml").put(room); } }
总结:
服务端开发:
1 创建web项目
2 写好接口、实现类
3 通过与spring集成或者直接发布、或者启动server类
客户端开发:
1 根据服务器发布的服务,使用wsdl2java创建客户端代码stub
2 通过cxfapi访问,服务端的服务
参考
http://borissun.iteye.com/blog/765869
http://www.cnblogs.com/i-bugs/p/3755615.html
疑问:
如果是js端访问呢?