与Dubbo整合
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>cn.tarena</groupId>
<artifactId>1509-jt-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
3.添加对jt-common工程的依赖
4.完善工程结构,建立pojo包和sevice包如下图:
5.建立Cart(购物车)类和DubboCartRestService接口
注意:对象要被可序列化
代码示例:
@Table(name="tb_cart")
public class Cart extends BasePojo{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private Long userId;
private Long itemId;
private String itemTitle;
private String itemImage;
private Long itemPrice;
private Integer num;
}
6.创建购物车的web工程
7.添加父工程以及对dubbo工程的依赖
此外注意:引入dubbo组件后,会导致maven的tomcat启动失败,所以,还需要再pom.xml里引入servlet的依赖:
javax.servlet:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
8.在pom.xml文件里添加tomcat插件,并配置端口
9.引入相关的配置文件
注意:重点修改applicationContext-provider.xml里的连接参数
10.引入购物车工程的web.xml(整合dubbo的启动)
11.建立CartMapper接口类
代码示例:
public interface CartMapper extends SysMapper{
}
12.建立dubbo 的服务实现类
代码示例:
public class DubboCartRestServiceImpl implements DubboCartRestService{
@Autowired
private CartMapper cartMapper;
}
最后的结构如下:
12.完善前台工程 (jt-web)
添加对jt-dubbo工程的依赖
13.引入appliactionContext-consumer的配置文件
注意修改zookeeper的连接参数
14.建立CartController类
代码示例:
@Controller
@RequestMapping
public class CartController {
@Autowired
private DubboCartRestService dubboCartRestService;
}
15.启动dubbo环境,zookeeper环境,并对dubbo工程install后,启动前台和购物车工程测试整合是否成功
购物车页面显示
所在工程:jt-web
CartController类代码:
@Autowired
private DubboCartRestService dcrs;
@RequestMapping("/cart/show")
public String myCartList(Model model){
Long userId = 7L;
List<Cart> cartList = dcrs.myCartList(userId);
model.addAttribute("cartList", cartList);
return "cart";
}
所在工程:jt-dubbo
DubboCartRestService接口代码:
//给dubbo调用时注入,配置
@Path("cart")//http://cart.jt.com/cart/query/7
@Consumes({
MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({
ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
public interface DubboCartRestService {
@GET
@Path("query")
public List<Cart> myCartList(@QueryParam(value="userId")Long userId);
}
所在工程:jt-cart
DubboCartRestServiceImpl实现类代码:
public class DubboCartRestServiceImpl implements DubboCartRestService{
@Autowired
private CartMapper cartMapper;
public List<Cart> myCartList(Long userId) {
Cart cart=new Cart();
cart.setUserId(userId);
List<Cart> cartList = cartMapper.select(cart);
return cartList;
}
购物车商品新增和保存
所在工程:jt-web
CartController类代码:
@Controller
public class CartController {
@Autowired
private DubboCartRestService dcrs;
@RequestMapping("/cart/show")
public String myCartList(Model model){
Long userId = 7L;
List<Cart> cartList = dcrs.myCartList(userId);
model.addAttribute("cartList", cartList)