buslogic主要依赖的是jersey,他提供了 JAX-RS的一个实现。 JAX-RS主要是定义了java restful框架的一种抽象实现。最主要的就是我们工程里restful用的那些annotation。所以说buslogic运用jersey主要是分为三部分,pom.xml, web.xml和java代码里的运用。
pom.xml
pom中比较重要的jersey包应该是jersey-core,jersey-server,jersey-servlet几个,我们还用了jersey-json等,这几个应该都不是很重要。另外我们的jersey是1.18,现在都是2.x了。有时间再去研究一下区别。现在只知道web.xml里有一个选项com.sun.jersey.spi.container.servlet.ServletContainer
变了. 另外不知道有没有什么插件可以在intellij里面看pom中一个dependency被你的项目哪些地方所依赖
web.xml
web.xml 的东西直接在里面以注释的方式讲了。
|
|
- Web.xml配置详解之context-param
- Chapter 10. Session Management
- RESTful Web Services Developer’s Guide
- jetty的两种方式,一种是直接继承PackagesResourceConfig实现一个application,然后
<param-name>javax.ws.rs.Application</param-name><param-value>类名</param-value>
- 一种是
<param-name>com.sun.jersey.config.property.packages</param-name><param-value>${pacakges}</param-value>
让jetty自己寻找PackagesResourceConfig的实现(或者说寻找RESTFull resource class)
- jetty的两种方式,一种是直接继承PackagesResourceConfig实现一个application,然后
RESTFull resource class
我们的工程里每个api的jersey入口都是restful.java,这里有个疑问就是jersey是通过什么标示找到这个入口的,是不是类前面的@Path annotation
|
|
两篇参考:
- jersey-annotation list,oracle的手册
- Jersey 入门与Javabean,有很多例子的一个blog
request filter
auth是一个比较特殊的模块,它实现了一个filter
|
|
这个主要是实现了一个containerRequestFilter的接口,重写了filter这个函数。其中
@Context的作用是获得一些系统环境信息,通过@Context可以获得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等。
部署
我们使用的是最简单的部署方式,将war包放到webapps文件夹里,jetty会自动解析,并且假如你的war包名字是kg.war,则路径会被解析成http://host/kg/,就是说路径名和war包名是对应的。之后对应函数再看servlet-mapping和函数中的@Path。
当然也可以自己制定路径等信息,具体可以看这篇文章: Jetty:部署到Jetty
jetty本身是一个容器,和tomcat类似,buslogic应该是不用依赖他的(查了下buslogic里唯一用到jetty的地方是用了他的concurrentHashSet。。。)。只要在jersey等框架里配好web.xml就可以。buslogic的启动命令是nohup java -jar -Xms2048m -Xmx2048m -Dkgbuslogicdebug ../soft/jetty/start.jar 2>&1 > log &
。而这个soft/jetty应该是直接下载jetty的源码接下就可以的。
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文链接:http://thousandhu.github.io/2016/04/20/buslogic中jetty和jersey的运用-md/