新建web工程,加入jax-rs的JAR包
新建一个类
在全局变量上使用@QueryParam和DefaultValue注解,jax-rs可以自动注入值
部署并运行
http://localhost:8080/rest/services/UserContext?org=TestORG
会打印出全局变量,同时也会打印出i的值,i为1
再运行一次
http://localhost:8080/rest/services/UserContext?org=TestORG
i的值还是1
验证了第一句结论:
所以默认情况下 rest服务的生命周期 == request的生命周期,请求过后立即消毁,所以默认情况下rest服务类是线程安全的
如果你需要使用单例来发布,jax-rs提供了注解@Singleton
加入Singleton注解以后,再重启运行
i的值就会不停累加
所以这时rest服务的生命周期 == 应用服务器生命周期
另外还有一种生命周期就是@PerSession,每一个session请求,就产生一个rest资源实例,直到这个session消毁,这个rest资源才会消失。
所以
rest有三种生命周期,三种周期分别等于request,session,applcation的生命周期