没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
30页
项目选定Hessian作为web service的实现方式,确实很轻量级,速度就跟直接用socket差不多,全是二进制传送节约了不少开销。但是在使用过程中有业务需要是必须获得远程端的ip地址,主机名等信息的。翻便Hessian的文档和google了n次未果,迫不得已到caucho和spring论坛去问,都没有得到答复。今天心一横把hessian的源代码加入到项目中单步跟踪,总算有点小收获。献丑分享出来,一方面给需要的朋友,主要还是希望各位找找是否存在bug,以及是否有更好的改良。
资源推荐
资源详情
资源评论
Hessian 源码分析和 Hack --让 Hessian 携带远程调用端的信息
项目选定 Hessian 作为 web service 的实现方式,确实很轻量级,速度就跟
直接用 socket 差不多,全是二进制传送节约了不少开销。但是在使用过程中有
业务需要是必须获得远程端的 ip 地址,主机名等信息的。翻便 Hessian 的文档
和 google 了 n 次未果,迫不得已到 caucho 和 spring 论坛去问,都没有得到答
复。今天心一横把 hessian 的源代码加入到项目中单步跟踪,总算有点小收获。
献丑分享出来,一方面给需要的朋友,主要还是希望各位找找是否存在 bug,以
及是否有更好的改良。
一:先撇开 Spring 不谈,来看看纯 Hessian 的调用
按照 hessian 文档里边介绍的 demo,在 web.xml 里边如下配置
Java 代码
1. <servlet>
2. <servlet-name>hello</servlet-name>
3. <servlet-class>com.caucho.hessian.server.HessianServlet</serv
let-class>
4. <init-param>
5. <param-name>home-class</param-name>
6. <param-value>example.BasicService</param-value>
7. </init-param>
8. <init-param>
9. <param-name>home-api</param-name>
10. <param-value>example.Basic</param-value>
11. </init-param>
12.</servlet>
13.
14.<servlet-mapping>
15. <url-pattern>/hello</url-pattern>
16. <servlet-name>hello</servlet-name>
17.</servlet-mapping>
由此可知 Hessian 调用的入口是 HessianServlet 这个 Servlet,进去看看
Java 代码
1. /**
2. * Servlet for serving Hessian services.
3. */
4. public class HessianServlet extends GenericServlet {
5. private Class _homeAPI;
6. private Object _homeImpl;
7.
8. private Class _objectAPI;
9. private Object _objectImpl;
10.
11. private HessianSkeleton _homeSkeleton;
12. private HessianSkeleton _objectSkeleton;
13.
14. private SerializerFactory _serializerFactory;
15.
16. public String getServletInfo()
17. {
18. return "Hessian Servlet";
19. }
20.
21. /**
22. * Sets the home api.
23. */
24. public void setHomeAPI(Class api)
25. {
26. _homeAPI = api;
27. }
28.
29. /**
30. * Sets the home implementation
31. */
32. public void setHome(Object home)
33. {
34. _homeImpl = home;
35. }
36.
37. /**
38. * Sets the object api.
39. */
40. public void setObjectAPI(Class api)
41. {
42. _objectAPI = api;
43. }
44.
45. /**
46. * Sets the object implementation
47. */
48. public void setObject(Object object)
49. {
50. _objectImpl = object;
51. }
52.
53. /**
54. * Sets the service class.
55. */
56. public void setService(Object service)
57. {
58. setHome(service);
59. }
60.
61. /**
62. * Sets the api-class.
63. */
64. public void setAPIClass(Class api)
65. {
66. setHomeAPI(api);
67. }
68.
69. /**
70. * Gets the api-class.
71. */
72. public Class getAPIClass()
73. {
74. return _homeAPI;
75. }
76.
77. /**
78. * Sets the serializer factory.
79. */
80. public void setSerializerFactory(SerializerFactory facto
ry)
81. {
82. _serializerFactory = factory;
83. }
84.
85. /**
86. * Gets the serializer factory.
87. */
88. public SerializerFactory getSerializerFactory()
89. {
90. if (_serializerFactory == null)
91. _serializerFactory = new SerializerFactory();
92.
93. return _serializerFactory;
94. }
95.
96. /**
97. * Sets the serializer send collection java type.
98. */
99. public void setSendCollectionType(boolean sendType)
100. {
101. getSerializerFactory().setSendCollectionType(sendT
ype);
102. }
103.
104. /**
剩余29页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1900
- 资源: 3864
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功