java注解 remote_游戏服务端中使用Servlet和Java注解的一个好设计

SNS类游戏基本都是使用HTTP短连接,用Java来开发服务端时能够使用Servlet+Tomcat非常轻松的架构起服务端来。在这里介绍一种使用Servlet比較好的一种设计,我也见过非常多基于HTTP请求的游戏服务端使用Struts、Spring、Hibernate等等。事实上我感觉对于游戏来说使用这些东西非常繁琐。若是开发Java Web应用使用SSH倒是合情合理。

使用Servlet时,我们能够仅仅创建一个Servlet左游戏中全部请求的入口,然后使用注解来标识方法,在程序启动时使用反射去收集注解的方法放到Map中,能够使用key=方法名。value=Method Object的方式,也另外定义一个协议号类。玩家的每一个操作相应一个协议号,以key=协议号,value=Method Object的方式存到Map中,依据client传过来的协议号或方法名到Map中取出MethodObject来运行,这种做有一些非常明显的优点就是全部的请求都在一个Servlet中统一处理,这样对异常处理就能够统一化,而且结构也非常清晰。

以下是收集注解方法的代码:

1、创建注解

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface RequestMethod {

String name() default "";

}2、注解方法(以下的方法放在RemoteService类中)

@RequestMethod(name = "login")

public Map login(Map params) throws Exception {

return userService.login(params);

}3、收集被注解的方法放到Map中

private static void processRemoteService() {

try {

Class> clazz = RemoteService.getInstance().getClass();

for (Method m : clazz.getMethods()) {

RequestMethod ann = m.getAnnotation(RequestMethod.class);

if (ann != null) {

//检查方法的參数类型和返回类型

//....

//...

if(ann.name().length() == 0){

}else {

GlobalService.putToRemoteMap(ann.name(), m);

}

}

}

} catch (SecurityException e) {

e.printStackTrace();

}

}在Servlet中就能够依据client传过来的login字符串取出Login Method Object运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值