namespace java cn.focus.dc.jiajing.model.thrift struct JjCases{ 1: i32 id, 2: i32 userId, 3: string title, 4: string description, 5: i32 createTime, 6: i32 updateTime, 7: string status } service JjCasesService{ JjCases get(1:i32 id), i32 add(1:JjCases jjCases), i32 update(1:JjCases jjCases), i32 remove(1:i32 id) i32 updateStatusByIds(1:i32 status, 2:string ids) list<JjCases> getOrderListByStatus(1:i32 status, 2:i32 userId, 3:i32 offset, 4:i32 limit) }
2、thrift-0.9.1.exe --gen java JjCases.thrift
生成文件
JjCases.java 和 JjCasesService.java
cn.focus.dc.jiajing.model.thrift
3、cn.focus.dc.jiajing.service.thrift 下编写service类
package cn.focus.dc.jiajing.service.thrift; import java.util.List; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import cn.focus.dc.jiajing.dao.JjCasesDAO; import cn.focus.dc.jiajing.model.thrift.JjCases; import cn.focus.dc.jiajing.model.thrift.JjCasesService; /** * @author qiaowang */ @Service public class JjCasesThriftService implements JjCasesService.Iface { private static final Logger logger = Logger.getLogger(JjCasesThriftService.class); @Autowired private JjCasesDAO jjCasesDAO; @Override public JjCases get(int id) throws TException { cn.focus.dc.jiajing.model.JjCases jjCases = new cn.focus.dc.jiajing.model.JjCases(); JjCases thriftJjCases = new JjCases(); try { if (id > 0) { jjCases = jjCasesDAO.get(id); BeanUtils.copyProperties(jjCases, thriftJjCases); } } catch (Exception e) { logger.error(e.getMessage(), e); } return thriftJjCases; } @Override public int add(JjCases jjCases) throws TException { // TODO Auto-generated method stub return 0; } @Override public int update(JjCases jjCases) throws TException { // TODO Auto-generated method stub return 0; } @Override public int remove(int id) throws TException { // TODO Auto-generated method stub return 0; } @Override public int updateStatusByIds(int status, String ids) throws TException { // TODO Auto-generated method stub return 0; } @Override public List<JjCases> getOrderListByStatus(int status, int userId, int offset, int limit) throws TException { // TODO Auto-generated method stub return null; } }
4、配置文件 才用http invoke
参考
http://blog.csdn.net/liaq325/article/details/8281550
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="/groupService.do" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="serviceInterface" value="cn.focus.dc.jiajing.model.thrift.GourpManager$Iface"></property> <property name="service" ref="groupService"></property> </bean> <bean name="/JjCasesThriftService.do" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <-接口-> <property name="serviceInterface" value="cn.focus.dc.jiajing.model.thrift.JjCasesService$Iface"></property> <实现> <property name="service" ref="JjCasesThriftService"></property> </bean> </beans>
5、客户端调用
配置:
<bean id="jjCasesThriftService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://localhost:8083/JjCasesThriftService.do</value> </property> <property name="serviceInterface"> <value>cn.focus.dc.jiajing.model.thrift.JjCasesService$Iface</value> </property> </bean>
controller类:
package cn.focus.dc.jiajing.controllers; import net.paoding.rose.web.annotation.Param; import net.paoding.rose.web.annotation.Path; import net.paoding.rose.web.annotation.rest.Get; import org.apache.log4j.Logger; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import cn.focus.dc.config.MsgConstant; import cn.focus.dc.jiajing.model.thrift.JjCases; import cn.focus.dc.jiajing.model.thrift.JjCasesService; import cn.focus.dc.jiajing.util.JsonResponse; /** * @author qiaowang * */ @Path("test") public class TestController { private static Logger logger = Logger.getLogger(TestController.class); @Autowired private JjCasesService.Iface jjCasesThriftService; @Get("get") public String get(@Param("id") int id) { try { cn.focus.dc.jiajing.model.JjCases jjCases = new cn.focus.dc.jiajing.model.JjCases(); if (id > 0) { JjCases thriftJjCases = jjCasesThriftService.get(id); BeanUtils.copyProperties(thriftJjCases, jjCases); return JsonResponse.ok(jjCases); } return JsonResponse.badResult(MsgConstant.PARAM_ERROR); } catch (Exception e) { logger.error(e.getMessage(), e); return JsonResponse.badResult(MsgConstant.SERVER_ERROR); } } }