Idea+Maven+Jersey2+Tomcat配置Web服务
关于在Idea中使用Maven来管理配置Jersey2服务的文章有很多,本文主要总结自己踩过的一些坑,希望对大家有所帮助。
基本环境配置
- 可以参考博客:
https://www.cnblogs.com/huaxingtianxia/p/5581259.html。
https://www.cnblogs.com/MarsCheng/p/7245292.html。 - 需要注意的是包的导入,缺失一些包会导致服务无法正常运行。主要的包包括:
服务器:jersey-server.jar 、jersey-container-servlet-core.jar、jersey-container-servlet.jar、javax.ws.rs-api-2.0.jar
客户端:jersey-client.jar
common:jersey-common.jar
hk2:jersey-hk2.jar
json支持:在Jersey2.0中需要使用 Jackson1.9 才能支持json。 web.xml文件中配置jersey2中的继承ResourceConfig子类的servlet。在url-pattern中设置/*即可,不用加上工程名称。因为项目在部署到tomcat服务器上时,默认是加上项目名进行访问的。(当时这个地方搞了好久)
<servlet> <servlet-name>JerseyServlet</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>app.MyRregister</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JerseyServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
Idea配置运行的tomcat服务器:端口和将要发布到的tomcat端口保持一致,否则无法访问。(另外一个坑)
Idea配置运行的tomcat服务器:Deployment中war exploded中的Application context加上 “/+项目名称”,这样可以你平常在idea运行tomcat测试的API和你将来发布到tomcat的api保持一致。(后来发现不设置好像加上项目名也可以访问,建议加上,养成良好的习惯)