CN105897884A - 基于XMPP协议的Android手机推送平台 - Google Patents

基于XMPP协议的Android手机推送平台 Download PDF

Info

Publication number
CN105897884A
CN105897884A CN201610212621.5A CN201610212621A CN105897884A CN 105897884 A CN105897884 A CN 105897884A CN 201610212621 A CN201610212621 A CN 201610212621A CN 105897884 A CN105897884 A CN 105897884A
Authority
CN
China
Prior art keywords
push
server
xmpp
data
platform
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610212621.5A
Other languages
English (en)
Other versions
CN105897884B (zh
Inventor
李强
袁熙
逯峻雨
盛小东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN201610212621.5A priority Critical patent/CN105897884B/zh
Publication of CN105897884A publication Critical patent/CN105897884A/zh
Application granted granted Critical
Publication of CN105897884B publication Critical patent/CN105897884B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明是一种基于XMPP协议的Android手机推送平台,该系统的推送界面展示基于B/S架构,管理员推送消息到客户端时可在浏览器端操作;系统推送消息到客户端的功能是基于C/S架构的,当管理员在浏览器端提交了推送请求,请求通过Web服务器到达推送服务器,推送服务器访问数据库,根据业务逻辑推送消息到客户端;Web服务器同时访问数据库,将用户信息和推送情况展示给管理员。该系统能进一步完善现有的推送平台,使之能够在更加完善的条件下进入生产环境,具有很好的推广价值和商业应用价值。本发明用以实现服务器端对Android客户端的即时消息推送,并实现了客户端断网自动重新连接、离线消息推送、对推送信息管理等功能。

Description

基于XMPP协议的Android手机推送平台
技术领域
本发明涉及Android手机应用程序领域,特别涉及一种基于XMPP协议的Android手机推送平台。
背景技术
当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如“新浪微博”就需要及时获取服务器上最新的分享信息。要获取服务器上不定时更新的信息,一般来说有两种方法:第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取信息,看是否有新的信息公布。第二种就是服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息推送到客户端上。这样,客户端就能被动的接收到消息。
如果我们使用Pull方式,无非就是在后台开启一个线程,在规定的时间间隔内访问服务器,查看有没有数据更新,有则获取,没有就什么也不做。当用户数量小的时候或许我们感觉不到什么,但是当用户数量级达到十万,百万的时候我们的服务器压力就大了,关键是服务器上可能没有更新数据,很多访问都无功而返,但是服务器不得不响应。这不仅仅浪费了服务器的资源,也浪费了用户手机端的流量。
如果我们使用Push方式,情况将有很大的不同。手机推送服务的原理很简单,就是通过建立一条手机与服务器的连接链路,当有消 息需要发送到手机时,通过此链路发送即可。手机不用机械地定时访问服务器,省电省流量;服务器不用响应用户群的同时访问,在有消息更新的时候主动推送到客户端,大大减轻了压力,也大大提高了效率。
针对于国内最为流行的两大操作系统Android和iOS,由于苹果完善的生态环境,iOS上已经有了比较简单和完美的推送解决方案,但是在Android平台上实现起来却相对比较麻烦。
在Android手机平台上,和苹果推送服务类似,Google为开发者开发了一套推送服务,名为C2DM(Cloud to Device Messaging)服务。Android C2DM是一套目的为协服务用户从服务器向Android移动端推送数据。C2DM服务原理十分简单清晰,实现起来也很容易,它让移动端与服务器之间建立一个长连接,从而客户端可以被动地从服务器获取到推送的数据。C2DM服务的任务就是管理开发者服务器发过来的推送数据,决定什么时候和如何发给客户端应用程序。但这个服务存在诸多的的弊端。
1)C2DM服务只能兼容Android 2.2及以上系统版本,对Android1.5-2.1系统版本是不支持的。
2)C2DM服务必须依靠于Google运行的C2DM服务器,由于国内的网络环境对谷歌的封杀,这个服务经常是不能用的,如果想要很好的利用,我们的应用服务器必须也在国外,对大部分公司或个人开发者显然是不现实的,目前来说在国内基本可以排除这种实现方式。
实际上谷歌自己设计的C2DM服务器基本原理也是使用XMPP协议 进行的设计。我们可以用XMPP协议开发自己的推送服务器。
XMPP协议,英文全名为eXtensive Messaging Presence Protocol,即可拓展消息处理和在线协议。这个协议是一种用来在两个点之间传输小型结构化的数据段的协议。这个协议是从Jabber协议演变而来,一个由开源组织研发的的网络即时通讯协议。XMPP协议是继承于XML的协议,中文名臣是标准通用标记语言。所以它有XML协议灵活的拓展性。所以,基于XMPP协议的各种应用具有很强的可扩展性。扩展以后的XMPP协议可以通过发送扩展的数据来处理用户的需求,同时可以在XMPP协议的顶端设计如内容发布系统和基于地址的服务程序等应用程序。并且XMPP协议包括了针对设计服务器端的协议,使之能与另外一个服务器进行通信,使得开发者更容易设计客户应用程序或者给一个配置好的系统添加新功能。XMPP协议出现以来由于其开源的特性不断发展,到现在已经十分成熟和健壮。
在java领域有一个以XMPP协议为基础的开源框架smack,它对一些XMPP协议的设计进行了实现。但是它不能直接应用的Android应用当中,因为Android系统没有一些JAVA实现的的类库。所以一个增强版的asmack出现了,这是为Android系统量身打造的。在此之后,Androidpn(Android Push Notification)框架使用了asmack框架,并自定义了移动端和服务器的长连接,从而完成了服务器端向客户端主动推送消息。
然而Androidpn框架也存在许多问题。
基于此,在框架的基础上进一步完善Androidpn这个推送平台, 使之能够在进一步完善的条件下进入生产环境就显得尤为必要。
发明内容
为解决上述现有技术存在的问题,本发明的目的在于提供一种基于XMPP协议的Android手机推送平台,其能更加完善现有的推送平台,使之能够在进一步完善的条件下进入生产环境,具有很好的推广价值和商业应用价值。
为达到上述目的,本发明的技术方案为:
一种基于XMPP协议的Android手机推送平台,该系统的推送界面展示基于B/S架构,管理员推送消息到客户端时在浏览器端操作;系统推送消息到客户端功能是基于C/S架构,当管理员在浏览器端提交了推送请求,请求通过Web服务器到达推送服务器,推送服务器访问数据库,根据业务逻辑推送消息到客户端;Web服务器同时访问数据库,将用户信息和推送情况展示给管理员。
进一步的,所述Web服务器采用J2EE轻量级架构:
Web服务器系统流程如下:
(1)首先用户点击提交按钮,将JSP页面的表单数据封装在Spring的Command对象中;
(2)Spring根据配置文件将数据通过Request对象传送到Spring相应的Controller对象;
(3)Controller对象调用相应的Manager对象进行相关业务逻辑处理,在本系统就两种查询和调用推送服务器的推送逻辑;
(4)Manager又调用相应的Service来对数据库进行操作;
(5)处理完的数据放在一个Model中逐层返回给Controller,Controller将通过UrlMapping类重新将Model中的数据显示到JSP 页面中;
(6)新的JSP页面返回给用户视图。
进一步的,所述用于推送消息的推送服务器使用Mina框架管理socket,在5222端口监听客户端的访问,Mina收到socket连接将业务逻辑交给业务处理,并负责回发信息;业务逻辑通过Hibernate访问数据库,判断连接是否合法、连接成功后是否推送的问题。
相对于现有技术,本发明的有益效果为:
一种基于XMPP协议的Android手机推送平台,其能更加完善现有的推送平台,使之能够在进一步完善的条件下进入生产环境,具有很好的推广价值和商业应用价值。
基于XMPP协议的Android手机推送平台用以实现服务器端对Android客户端的即时消息推送。并实现了客户端断网自动重新连接、离线消息推送、对推送信息管理等功能。
客户端一般响应时间(除报表统计、数据导入)不超过1秒。
大规模查询或汇总统计时间不超过15秒。
支持1000条消息并发操作。
权限控制:根据用户名和服务名来决定不同消息的接收者。
重要数据加密:本系统对一些重要的数据按一定的算法进行加密,如用户密码、重要参数等。
数据备份:服务器端对所推送的消息进行存储备份,以便查验。
记录日志:本系统应该能够记录系统运行时所发生的所有错误,包括本机错误和网络错误。这些错误记录便于查找错误的原因。日志同时记录用户的关键性操作信息。
图形用户界面简洁友好,方便操作。
平台兼容性强,支持各种Android系统智能移动终端使用。
控制必录入项:本系统能够对必须录入的项目进行控制,使用户能够确保信息录入的完整。同时对必录入项进行有效的统一的提示。
容错能力:系统具有一定的容错和抗干扰能力,在非硬件故障或非通讯故障时,系统能够保证正常运行,并有丰富的提示信息帮助用户有效正确地完成任务。
可作为第三方应用使用,为应用程序提供调用接口,适合合成在各种应用程序中。
系统给提供联机帮助与操作指南。
附图说明
图1为本发明的系统结构示意图;
具体实施方式
图2是本发明的CS建立连接流程图;
图3是本发明的服务器推送消息流程图;
图4是本发明的长连接断开重连流程图。
下面结合附图和具体实施方式对本发明技术方案做进一步详细描述:
试验例:
1、本发明的运行环境为:
1.1.1.模拟机测试
1.1.2.真机运行
2系统结构
2.1.系统架构图
系统的推送界面展示基于B/S架构,管理员需要推送消息到客户端时需要在浏览器端操作;系统推送消息到客户端功能基于C/S架构,当管理员在浏览器端提交了推送请求,请求通过Web服务器到达推送服务器,推送服务器访问数据库,根据业务逻辑推送消息到客户端;Web服务器同时也可以访问数据库,将用户信息和推送情况展示给管理员,系统架构设计如图1所示。
2.2.Web服务器结构
Web服务器端的设计采用了目前业界新颖活泼的J2EE轻量级架构—SpringFramework+Hibernate+Tomcat技术,使得该系统具有更强的可扩展性,大大简化了系统开发人员的实际工作量。
Web服务器系统流程如下:
(1)首先用户点击提交按钮,将JSP页面的表单数据封装在Spring的Command对象中。
(2)Spring根据配置文件将数据通过Request对象传送到Spring相应的Controller对象。
(3)Controller对象调用相应的Manager对象进行相关业务逻辑处理,在本系统就两种查询和调用推送服务器的推送逻辑。
(4)Manager又调用相应的Service来对数据库进行操作。
(5)处理完的数据放在一个Model中逐层返回给Controller,Controller将通过UrlMapping类重新将Model中的数据显示到JSP页面中;
(6)新的JSP页面返回给用户视图。
2.3.推送服务器结构
推送服务器使用了Mina框架管理socket,在5222端口监听客户端的访问,Mina收到socket连接将业务逻辑交给业务处理,并负责回发信息;业务逻辑通过Hibernate访问数据库,判断连接是否合法、连接成功后是否推送等问题。
3系统设计说明
3.1.系统流程设计说明
3.1.1.CS建立连接流程
如图2所示。
3.1.2.服务器推送消息流程
如图3所示。
3.1.3.长连接断开重连流程
如图4所示。
3.2.客户端设计说明
现在按照包的分类来分解系统各个部分的功能:
1)app包:这个包的功能就是启动连接服务的入口。
●MainActivity类是启动程序类,在这个启动类中会发起连接服务器的服务。
●BootStart类是开机自动启动连接服务器的服务类。
●ServiceManager类是服务的管理类。
2)connect包:定义和管理服务器的连接机制。
●XmppManager类定义了整个与服务器建立长连接的机制。
●ConnectTask、RegisterTask和LoginTask定义了连接服务器、 注册服务器、登录服务器任务。
●ReconnectionThread类定义一个线程,这个线程启动了重新连接服务器的任务。
3)listeners包:监听手机网络状态、长连接状态以及服务器端发送的推送包。
这三个类执行监听的任务并触发执行一定的任务。
4)notification:主要功能是解析服务器发过来的包以及Notification显示的设置。
5)util包:一些工具类。
3.3.服务器端设计说明
3.3.1.模型设计
1)实体的定义
本系统关于实体总共定义了四个类,位于org.androidpn.server.model包中:
●MessageMO类:定义了发送给用户的和用户一一对应的唯一的推送消息。
●Notification类:定义了可能发送发给多个用户的一个推送。
●SessionVO:定义了一个在线用户信息,用于视图显示数据。
●User:定义了一个普通用户的信息。
本系统对于数据库的操作使用了Hibernate框架,所以在每个实体类中都使用了注解,使实体类和数据库中的表一一对应;实体类中 的属性和数据库中的字段一一对应。
2)接口的定义和实现
和实体类相对应,本系统设计了四个接口及其实现用于对实体对象在数据库当中的存取操作。接口定义在org.androidpn.server.service包中,实现定义在org.androidpn.server.service.impl包中。
3)用户认证逻辑
在用户认证上,定义了一个AuthToken类代表用户的认证身份,定义了一个AuthManager管理用户的认证身份。
4)推送消息逻辑
定义了NotificationManager类,位于org.androidpn.server.xmpp.push包中。
5)会话管理逻辑
在包org.androidpn.server.xmpp.session定义了抽象类Session、ClientSession定义服务器和客户端的一个会话;SessionManager类管理服务器和所有客户端的连接。
6)安全逻辑
在安全传输方面,本系统使用了Secure Sockets Layer(SSL),即安全套接层协议层,它的实现在包org.androidpn.server.xmpp.ssl中:
SSLKeyManagerFactory类负责SSL秘钥的生成,SSLTrustManagerFactory负责SSl证书的管理。
3.3.2.视图设计
本系统视图的设计采用全jsp编写的页面。
●用户列表页面:user/list.jsp;
●在线用户列表页面:session/list.jsp;
●推送消息操作页面:notification/form.jsp;
●已推送消息管理页面:notificationlist/list.jsp。
●控制器设计
服务器端控制器的设计,由于服务器采用了spring框架,所以使用的spingmvc的框架设计模式。针对视图的四个不同的页面,系统设计了四个Controller,分别用于响应四个页面的请求。位置在包Org.androidpn.server.console.controller下。
分别对应如下:
●用户列表页面控制器:UserController;
●在线用户列表页面控制器:SessionController;
●推送消息操作页面控制器:NotificationController;
●已推送消息管理页面控制器:MessageController。
4数据库设计
4.1.开发工具
数据库:MySQL 5.6.16;
管理工具:SQLyog GUI v11.13。
4.2.库表介绍
表1:用户表
字段名 类型 允许为空 默认值 说明
id bigint(20) × 主键
username Varchar(64) × 用户名
password Varchar(64) × 用户密码
email Varchar(64) null 用户email
name Varchar(64) null 用户真实姓名
creat_date datetime × 创建日期
update_date datetime null 更新日期
表2:Message表
表3:Notification表
5对外接口设计
为了方便其他应用程序对本推送平台的调用,本平台还设计了服务注册、用户注册、消息推送、推送消息查看的对外的接口,以便将平台更简洁的嵌入其它应用程序的使用中。
本平台以Hessian协议发布对外接口,通过规定好的xml格式文件进行数据内容的传输。
5.1.注册接口
平台注册分为服务注册和用户注册两种。服务注册指所需应用该平台的应用程序的注册,平台会为每个注册的应用程序分配一个apiKey以示区别;用户注册为使用应用程序的用户注册,以不可重复用户名作为区分,实现对特定用户的消息推送功能。
5.1.1.服务注册接口
服务注册接口:public String saveServerUser(String Data);
数据传输格式:
5.1.2.用户注册接口
服务注册接口:public int saveUser(String Data);
数据传输格式:
5.2.消息推送接口
消息推送接口:public int getPushData(String tag,String Data);
数据传输格式:
1)将消息发送给看所有用户,tag值为A;
2)将消息发送给在线用户,tag值为O;
3)将消息发送给指定用户,tag值为S;
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。

Claims (3)

1.一种基于XMPP协议的Android手机推送平台,其特征在于,该系统的推送界面展示基于B/S架构,管理员推送消息到客户端时在浏览器端操作;系统推送消息到客户端的功能基于C/S架构,当管理员在浏览器端提交了推送请求,请求通过Web服务器到达推送服务器,推送服务器访问数据库,根据业务逻辑推送消息到客户端;Web服务器同时访问数据库,将用户信息和推送情况展示给管理员。
2.根据权利要求1所述的基于XMPP协议的Android手机推送平台,其特征在于,所述Web服务器采用J2EE轻量级架构:
Web服务器系统流程如下:
(1)首先用户点击提交按钮,将JSP页面的表单数据封装在Spring的Command对象中;
(2)Spring根据配置文件将数据通过Request对象传送到Spring相应的Controller对象;
(3)Controller对象调用相应的Manager对象进行相关业务逻辑处理,在本系统就两种查询和调用推送服务器的推送逻辑;
(4)Manager又调用相应的Service来对数据库进行操作;
(5)处理完的数据放在一个Model中逐层返回给Controller,Controller将通过UrlMapping类重新将Model中的数据显示到JSP页面中;
(6)新的JSP页面返回给用户视图。
3.根据权利要求1所述的基于XMPP协议的Android手机推送平台,其特征在于,所述用于推送消息的推送服务器使用Mina框架管理socket,在5222端口监听客户端的访问,Mina收到socket连接将业务逻辑交给业务处理,并负责回发信息;业务逻辑通过Hibernate访问数据库,判断连接是否合法、连接成功后是否推送的问题。
CN201610212621.5A 2016-04-07 2016-04-07 基于XMPP协议的Android手机推送平台 Expired - Fee Related CN105897884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610212621.5A CN105897884B (zh) 2016-04-07 2016-04-07 基于XMPP协议的Android手机推送平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610212621.5A CN105897884B (zh) 2016-04-07 2016-04-07 基于XMPP协议的Android手机推送平台

Publications (2)

Publication Number Publication Date
CN105897884A true CN105897884A (zh) 2016-08-24
CN105897884B CN105897884B (zh) 2019-05-31

Family

ID=57013027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610212621.5A Expired - Fee Related CN105897884B (zh) 2016-04-07 2016-04-07 基于XMPP协议的Android手机推送平台

Country Status (1)

Country Link
CN (1) CN105897884B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107734012A (zh) * 2017-09-27 2018-02-23 努比亚技术有限公司 消息推送方法、系统及计算机可读存储介质
CN110012115A (zh) * 2019-05-06 2019-07-12 广州华多网络科技有限公司 直播间推送信息的更新方法和系统
CN111211972A (zh) * 2020-01-10 2020-05-29 青岛特来电云科技有限公司 一种支持信息拉取及多渠道推送的消息通知系统及方法
CN113395321A (zh) * 2021-05-08 2021-09-14 中山亿联智能科技有限公司 一种支持多系统格式推送调用项目系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103731802A (zh) * 2012-10-12 2014-04-16 上海宝信软件股份有限公司 基于Android移动终端的设备管理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103731802A (zh) * 2012-10-12 2014-04-16 上海宝信软件股份有限公司 基于Android移动终端的设备管理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107734012A (zh) * 2017-09-27 2018-02-23 努比亚技术有限公司 消息推送方法、系统及计算机可读存储介质
CN107734012B (zh) * 2017-09-27 2021-06-15 努比亚技术有限公司 消息推送方法、系统及计算机可读存储介质
CN110012115A (zh) * 2019-05-06 2019-07-12 广州华多网络科技有限公司 直播间推送信息的更新方法和系统
CN111211972A (zh) * 2020-01-10 2020-05-29 青岛特来电云科技有限公司 一种支持信息拉取及多渠道推送的消息通知系统及方法
CN113395321A (zh) * 2021-05-08 2021-09-14 中山亿联智能科技有限公司 一种支持多系统格式推送调用项目系统

Also Published As

Publication number Publication date
CN105897884B (zh) 2019-05-31

Similar Documents

Publication Publication Date Title
WO2021017301A1 (zh) 基于Kubernetes集群的管理方法、装置及计算机可读存储介质
CN111258627B (zh) 一种接口文档生成方法和装置
CN109361517A (zh) 一种基于云计算的虚拟化云密码机系统及其实现方法
US20150373012A1 (en) Integrated APIs and UIs for Consuming Services across Different Distributed Networks
WO2020233369A1 (zh) 基于模拟端口改进软件集成系统的方法及相关设备
CN105897884A (zh) 基于XMPP协议的Android手机推送平台
CN106487600A (zh) 一种WebLogic集群的自动部署方案
CN106357609A (zh) 一种创建用户的方法和系统、公网服务器及私有云设备
US10924590B1 (en) Virtual workspace experience visualization and optimization
WO2021197183A1 (zh) 路径识别方法、装置和系统
CN114217981A (zh) 银企直连的通信方法、装置、计算机设备和存储介质
Mijić et al. Unified iot platform architecture platforms as major iot building blocks
Wang et al. MetaOJ: A massive distributed online judge system
US10318437B2 (en) System and method for unified secure remote configuration and management of multiple applications on embedded device platform
EP3709571A1 (en) Device management clustering
US20230267430A1 (en) Data processing method and device, and computer-readable storage medium
US11924039B2 (en) System and method for optimization of network function management and computer readable medium thereof
US9858321B2 (en) Accessing application services from forms
CN113031928B (zh) web系统生成方法及装置、电子设备和计算机可读存储介质
CN109194695A (zh) 门户认证方法、系统及计算机可读存储介质
CN114285859A (zh) 中间层区块链服务的数据处理方法、装置、设备及存储介质
CN106712977A (zh) 用户权限配置方法及装置
CN113282374A (zh) 一种服务器控制方法、装置及系统
CN108881344B (zh) 业务处理方法、装置、存储设备及处理服务器
CN107544920A (zh) 一种基于Android智能手机的模拟计算机外设平台的设计方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190531

Termination date: 20200407

CF01 Termination of patent right due to non-payment of annual fee