Hessian HessianProxy.invoke(HessianProxy.java:197)
Posted 孙晓凯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hessian HessianProxy.invoke(HessianProxy.java:197)相关的知识,希望对你有一定的参考价值。
今天中午接到一个小需求:一订单系统的小伙伴需要访问我产品中心的一个表,那铁定不能直接读我PC(产品中心)的表啊,于是乎我需要写一个hessian接口给他。一顿神操作,不到十分钟,接口完成,如下所示:
//java bean
public class LogisticsLanguagesTrackingUrl
int logistics_id;
int languages_id;
String pc_url;
String mobile_url;
String app_url;
...省略set,get,toString方法
//接口
public List<LogisticsLanguagesTrackingUrl> getLogisticsLanguagesTrackingUrlByLoidAndLaid(Integer loId, Integer laId);
//实现
@Override
public List<LogisticsLanguagesTrackingUrl> getLogisticsLanguagesTrackingUrlByLoidAndLaid(Integer loId, Integer laId) throws Exception
return productsManager.getLLTU(loId,laId);
public List<LogisticsLanguagesTrackingUrl> getLLTU(int lo,int la) throws Exception
return productsDao.getLLTU(lo,la);
public List<LogisticsLanguagesTrackingUrl> getLLTU(int lo, int la) throws Exception
return mapper.getLogisticsLanguagesTBL(lo,la);
<select id="getLogisticsLanguagesTBL" resultType="com.litb.pc.common.entity.bean.resource.LogisticsLanguagesTrackingUrl">
select * from logistics_languages_tracking_url
where logistics_id = #loId
and languages_id = #laId;
</select>
一切都是那么的自然与随意。接下来就是干什么呢?测试?不存在的!直接在群里大吼一声,开发好了,并@订单的小伙伴。
过了大约一分钟吧,订单的小伙伴发回我一串包错信息并附加一个微笑的表情。
com.caucho.hessian.client.HessianConnectionException: 500: java.io.IOException: Server returned HTTP response code: 500 for URL: http://xxx:8083/products.api
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:197)
at com.sun.proxy.$Proxy2.getLogisticsLanguagesTrackingUrlByLoidAndLaid(Unknown Source)
心想这还不简单吗,这不是500了吗,这不是链接异常了吗,那铁定是项目没有部署好呗。再次一顿神操作,依然报同样的错。此时已经意识到事情没有这么简单,先查看整体流程,发现没毛病,然后跟踪代码发现已调用mapper方法,返回Javabean的时候就报错,此时已经百思不得其解,这数据库和hessian链接有啥关系。
然后开始了漫长的查找错误的过程。。。。。
没查到,上个厕所,梳理一下hessian原理。突然恍然大悟,是不是我的Javabean没有序列化,回来一看,果然如此。
改成如下:
public class LogisticsLanguagesTrackingUrl implements Serializable
int logistics_id;
int languages_id;
String pc_url;
String mobile_url;
String app_url;
测试通过,一切正常 。
所以说这个原理是有用的,但是只懂原理不实践是屁用没有的,因为你实践的时候不一定能想到原理这档子事。
以上是关于Hessian HessianProxy.invoke(HessianProxy.java:197)的主要内容,如果未能解决你的问题,请参考以下文章