axis2问题随笔

本文介绍了axis2框架中利用module概念实现消息处理的模块化设计,通过设置特定的handler顺序来处理消息的inflow和outflow阶段,并实现了异步调用功能。实践中,加入压缩模块,包含压缩和解压两个handler,以实现soapbody的压缩传输,解决了传输过程中乱码和解码问题。

1.axis2c提供了wsdl2c的工具,可以根据wsdl生成c语言描述的stub,客户端调用stub去访问服务,其中这个服务既可以是c实现的,也可以是java实现的。

2.axis2提出了module的概念,将对消息的处理模块化,每一个模块又可以包含多个handler,这每一个handler是具体的功能实现。phase order是一系列phase的顺序集合,而每一个phase又包括了几个相应的handler,这些handler在phase之中也是有顺序的,总之,无论是inflow还是outflow,本质上都是一系列handler的有序集合。

3.axis2可以实现异步调用,并且还可以加入回调函数哦。

4.实践,在axis2中加入压缩模块,包含压缩和解压两个handler。总体思路是,用zlib对soapbody进行压缩,将压缩handler设置为outflow中messageout的phaselast,解压handler设置为inflow中transport的phaselast(理解上是只要在predispatch之前即可,没有具体试验)。

实现过程中遇到几个问题:

a)多理解一下axiom的object model思想。在压缩handler中,将soapbody的childnode视为一个整体进行压缩,将此节点detach掉,压缩后的字符串组成一个新的节点,add到basenode上。

b)压缩后的字符串,打印出来看是乱码,这很正常,但是经过传输,接收端无法收到此块压缩内容。解决方法:对于发送端,压缩后传输前进行base64的转换,对于接收端,传输后解压前进行base64的转回,ok,问题已关闭。

c)在解压handler中,如何将字符串再解析回soapbody的原格式。哎,好像比较麻烦,解析解析,具体还未实现,但是明确的一点是,因为object module思想的关系,必须把每个节点的信息都解析出来。当然,应该还有另外一条路,就是自己去做后续的一些工作,包括服务的查找、调用啥的,目前暂无具体研究。


import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt import numpy as np # 1. 准备朋友圈文本数据 friends_text = """ 今天和朋友们去了海边,阳光沙滩海浪,真是太美好了! 周末聚餐,火锅烧烤小龙虾,美食让人心情愉悦。 工作加班到深夜,但为了梦想值得坚持。 运动打卡,跑步瑜伽健身,健康生活每一天。 旅行日记,山川湖海风景如画,世界那么大我想去看看。 读书分享,文学历史心理学,知识让人成长。 音乐现场,摇滚民谣流行乐,音乐是生活的调味剂。 电影推荐,科幻悬疑爱情片,好电影值得反复品味。 心情随笔,喜怒哀乐都是生活的一部分。 友情岁月,朋友是一生的财富,感恩相遇。 """ # 自定义分词处理函数 def process_text(text):    # 添加自定义词汇,避免被切碎 jieba.add_word("小龙虾") jieba.add_word("心情愉悦") # 分词 words = jieba.cut(text) # 过滤停用词和单字词 meaningful_words = [] stop_words = {"今天", "为了", "的", "是", "让人", "那么", "我想", "一部分", "一些", "让"} for word in words: if len(word) > 1 and word not in stop_words: meaningful_words.append(word) return " ".join(meaningful_words) # 处理文本 processed_text = process_text(friends_text) print("处理后的文本:", processed_text) # 创建心形遮罩 def create_heart_mask(): mask = np.zeros((300, 300), dtype=np.uint8) for i in range(300): for j in range(300): x = (j - 150) / 80 y = -(i - 150) / 80 if (x**2 + y**2 - 1)**3 - x**2 * y**3 <= 0: mask[i, j] = 255 return mask # 生成词云 def generate_wordcloud(text, mask): wc = WordCloud( font_path="simhei.ttf", # 中文字体路径(关键!) background_color="white", max_words=100, mask=mask, contour_color=None, max_font_size=100, random_state=42, colormap="plasma" ) wordcloud = wc.generate(text) return wordcloud # 执行绘图 heart_mask = create_heart_mask() wordcloud = generate_wordcloud(processed_text, heart_mask) # 显示图像 plt.figure(figsize=(10, 8)) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") plt.title("朋友圈词云-心形", fontsize=16, pad=20) plt.tight_layout() plt.show() # 保存图片 wordcloud.to_file("friends_wordcloud.png") print("词云已保存为 'friends_wordcloud.png'") 检查代码错误
最新发布
12-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值